我正在使用正则表达式,我试着写道:
Regex RegObj2 = new Regex("\w[a][b][(c|d)][(c|d)].\w");
两次给我这个错误,每次出现一次\w
:
unrecognized escape sequence
我做错了什么?
答案 0 :(得分:4)
您没有在非逐字字符串文字中转义\
。
解决方案:根据string literals的C#规则,将@
放在字符串前面或加倍反斜杠。
答案 1 :(得分:3)
尝试逃避逃跑;)
Regex RegObj2 = new Regex("\\w[a][b][(c|d)][(c|d)].\\w");
或添加@(如@Dominic Kexel建议的那样)
答案 2 :(得分:1)
编写正则表达式时需要两种潜在的转义级别:
在这种情况下,后者正在绊倒你。 要么转义\
以使其成为字符串的一部分,或使用逐字字符串文字(带有@
前缀),以便{ {1}}没有正常的逃避意义。所以这些中的任何一个:
\
这两种方法在执行时完全相同。在这两种情况下,您都尝试使用值
创建字符串常量Regex regex1 = new Regex(@"\w[a][b][(c|d)][(c|d)].\w");
Regex regex2 = new Regex("\\w[a][b][(c|d)][(c|d)].\\w");
这两种形式只是在C#源代码中表达这种形式的不同方式。
答案 3 :(得分:0)
反斜杠未被转义,例如\\
或
new Regex(@"\w[a][b][(c|d)][(c|d)].\w");