c# - 获取字符串中模式的匹配项

标签 c# regex string

我有以下正则表达式:

^[[][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/

相关文章:

javascript - 需要帮助解析 Markdown ,删除斜体 (*) 但不是粗体 (**)

javascript - 如何将数组中的 true 和 false 字符串解析为 boolean 值

Python:字符串连接类型错误 - 一元 + 的错误操作数类型: 'str'

c# - 用 c# 编写 mp3 播放器,使用字典或数组作为元数据?

c# - 检查 gridview 列复选框

c# - 从 C# 中的 List 或 HashSet 中删除重复项

c++ - 在C++ 11中使用字符串如何满足条件?

c# - 检查文件是否为 .NET 程序集

Python删除字符直到字母或数字

python删除C函数体