这是一个菜鸟问题,但我的正则表达式技能一般都很差。 我想根据以下格式匹配字符串:
左括号左括号C或R L右括号任意A-Z a-z右括号
因此,字符串[(CL)test]
是正确的,而[blah(ll
则不是。
我有这个正则表达式模式:
^\\[\\([RC]L\\)[A-Za-z]\\]$
但它无法匹配正确的字符串(显然是由于我的错误,但我找不到它)。
非常感谢任何帮助。
答案 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?$"
应该做你想做的事。