将字符串与括号匹配

时间:2013-10-29 18:26:16

标签: c# regex

这是一个菜鸟问题,但我的正则表达式技能一般都很差。 我想根据以下格式匹配字符串:

左括号左括号C或R L右括号任意A-Z a-z右括号

因此,字符串[(CL)test]是正确的,而[blah(ll则不是。

我有这个正则表达式模式:

^\\[\\([RC]L\\)[A-Za-z]\\]$

但它无法匹配正确的字符串(显然是由于我的错误,但我找不到它)。

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:1)

你忘记了量词:

^\\[\\([RC]L\\)[A-Za-z]*\\]$
                       ^

或者

^\\[\\([RC]L\\)[A-Za-z]+\\]$
                       ^

否则,您的正则表达式只会尝试匹配单个[A-Za-z]

您可以在C#中使用@以避免双重转义:

@"^\[\([RC]L\)[A-Za-z]+\]$"

答案 1 :(得分:1)

string regex = @"\[\((C|R)L\)[a-zA-Z]+\]"

应该适合你

答案 2 :(得分:1)

添加*

^ [(RC] L)[A-ZA-Z] *] $

答案 3 :(得分:1)

您忘记在角色等级[]

之后添加使用量词
*      Match 0 or more times
+      Match 1 or more times

此外,您可以避免在此处使用正则表达式中的双重转义\\,并使用(?i)修饰符或RegexOptions.IgnoreCase进行不区分大小写的匹配。

Regex r = new Regex(@"^\[\([rc]l\)[a-z]+\]$", RegexOptions.IgnoreCase);

答案 4 :(得分:0)

@"^\[\([RC]L\)\w+\]\n?$"应该做你想做的事。