这是一个菜鸟问题,但我的正则表达式技能一般都很差。我想根据以下格式匹配一个字符串:
左括号 左括号 C 或 RL 右括号 任意 AZ az 右括号
因此,字符串[(CL)test]
是正确的,而[blah(ll
不是。
我有这个正则表达式模式:
^\\[\\([RC]L\\)[A-Za-z]\\]$
但它无法匹配正确的字符串(显然是由于我的错误,但我找不到它)。
任何帮助是极大的赞赏。
你忘记了量词:
^\\[\\([RC]L\\)[A-Za-z]*\\]$
^
或者
^\\[\\([RC]L\\)[A-Za-z]+\\]$
^
否则,您的正则表达式只会尝试匹配单个[A-Za-z]
.
您可以@
在 C# 中使用以避免双重转义:
@"^\[\([RC]L\)[A-Za-z]+\]$"
string regex = @"\[\((C|R)L\)[a-zA-Z]+\]"
应该为你工作
添加 *
^[([RC]L)[A-Za-z]*]$
您忘记在字符类之后添加量词的使用[]
* Match 0 or more times
+ Match 1 or more times
此外,您可以在此处避免在正则表达式中使用双重转义\\
,并使用(?i)
修饰符或RegexOptions.IgnoreCase
不区分大小写的匹配。
Regex r = new Regex(@"^\[\([rc]l\)[a-z]+\]$", RegexOptions.IgnoreCase);
@"^\[\([RC]L\)\w+\]\n?$"
应该做你想做的。