0

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

左括号 左括号 C 或 RL 右括号 任意 AZ az 右括号

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

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

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

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

任何帮助是极大的赞赏。

4

5 回答 5

1

你忘记了量词:

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

或者

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

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

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

@"^\[\([RC]L\)[A-Za-z]+\]$"
于 2013-10-29T18:29:17.013 回答
1
string regex = @"\[\((C|R)L\)[a-zA-Z]+\]"

应该为你工作

于 2013-10-29T18:29:40.243 回答
1

添加 *

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

于 2013-10-29T18:30:23.307 回答
1

您忘记在字符类之后添加量词的使用[]

*      Match 0 or more times
+      Match 1 or more times

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

Regex r = new Regex(@"^\[\([rc]l\)[a-z]+\]$", RegexOptions.IgnoreCase);
于 2013-10-29T19:05:27.243 回答
0

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

于 2013-10-29T18:30:49.457 回答