我有以下正则表达式:
^[[][A-Za-z_1-9]+[\]]$
我希望能够在一个字符串中得到这个正则表达式的所有匹配项。匹配项的格式应为 [Whatever]
。在大括号内,还可以有一个 _
或数字字符。所以我写了下面的代码:
private const String REGEX = @"^[[][A-Za-z_1-9]+[\]]$";
static void Main(string[] args)
{
String expression = "([ColumnName] * 500) / ([AnotherColumn] - 50)";
MatchCollection matches = Regex.Matches(expression, REGEX);
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
Console.ReadLine();
}
但不幸的是,matches
的计数始终为零。显然,正则表达式正在检查整个字符串是否匹配,而不是从字符串中获取匹配项。我不确定是正则表达式错误还是我使用 Regex.Matches()
的方式不正确。
有什么想法吗?
最佳答案
您需要从您的模式中删除字符串 anchor (^
和 $
)的开始/结束,因为您要查找的匹配项实际上并不在开始处和字符串的结尾。您也可以只使用 \[
和 \]
而不是 [[]
和 [\]]
:
private const String REGEX = @"\[[A-Za-z_1-9]+\]";
应该可以解决问题。
关于c# - 获取字符串中模式的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12819919/