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

C# 获取字符串中模式的匹配项,c#,regex,string,C#,Regex,String,我有以下正则表达式: ^[[][A-Za-z_1-9]+[\]]$ 我希望能够在字符串中获取此正则表达式的所有匹配项。比赛的形式应该是[随便什么]。在大括号内,还可能有一个u或数字字符。因此,我编写了以下代码: private const String REGEX = @"^[[][A-Za-z_1-9]+[\]]$"; static void Main(string[] args) { String expression = "([ColumnName] * 500) / ([A

我有以下正则表达式:

^[[][A-Za-z_1-9]+[\]]$
我希望能够在字符串中获取此正则表达式的所有匹配项。比赛的形式应该是[随便什么]。在大括号内,还可能有一个u或数字字符。因此,我编写了以下代码:

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();
}
但不幸的是,匹配的计数总是为零。显然,正则表达式正在检查整个字符串是否匹配,而不是从字符串中获取匹配项。我不确定正则表达式是否错误,或者我使用Regex.Matches的方式是否错误


有什么想法吗?

您将正则表达式锚定到字符串的开头和结尾,因此它当然不会匹配任何内容

移除开头的锚^和结尾的锚^工程罚款:

[[][A-Za-z_1-9]+[\]]
它返回,正如您希望的那样:

[ColumnName]
[AnotherColumn]

您将正则表达式锚定到字符串的开头和结尾,因此它当然不会匹配任何内容

移除开头的锚^和结尾的锚^工程罚款:

[[][A-Za-z_1-9]+[\]]
它返回,正如您希望的那样:

[ColumnName]
[AnotherColumn]

您需要从模式中删除字符串起始/结束锚定“^和$,因为您要查找的匹配项实际上并不在字符串的起始和结束处。您也可以使用\[和\]而不是[[]和[\]]:


我们应该做到这一点

您需要从模式中删除字符串起始/结束锚定“^和$,因为您要查找的匹配项实际上并不在字符串的起始和结束处。您也可以使用\[和\]而不是[[]和[\]]:


我们应该做到这一点

请为我们提供表达式的输入。顺便说一句,为了简单起见,您可以使用\w=[a-zA-Z0-9_u3;],除非您明确地豁免0,那么当然,nevermind[不确定是否输入错误];实际上是的,那是个打字错误。感谢您指出:请为我们提供表达式的输入。顺便说一句,为了简单起见,您可以使用\w=[a-zA-Z0-9_u],除非您明确豁免0,那么当然,无需担心[不确定是否输入错误];实际上是的,那是个打字错误。感谢您指出: