\ w在使用正则表达式时给出错误

时间:2013-01-25 13:56:37

标签: c# regex

我正在使用正则表达式,我试着写道:

Regex RegObj2 = new Regex("\w[a][b][(c|d)][(c|d)].\w");

两次给我这个错误,每次出现一次\w

unrecognized escape sequence

我做错了什么?

4 个答案:

答案 0 :(得分:4)

您没有在非逐字字符串文字中转义\

解决方案:根据string literals的C#规则,将@放在字符串前面或加倍反斜杠。

答案 1 :(得分:3)

尝试逃避逃跑;)

Regex RegObj2 = new Regex("\\w[a][b][(c|d)][(c|d)].\\w");

或添加@(如@Dominic Kexel建议的那样)

答案 2 :(得分:1)

编写正则表达式时需要两种潜在的转义级别:

  • 正则表达式转义(例如转义括号,或在本例中指定字符类)
  • C#字符串文字转义

在这种情况下,后者正在绊倒你。 要么转义\以使其成为字符串的一部分,使用逐字字符串文字(带有@前缀),以便{ {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");