c#regex中的\ ^出错

时间:2010-08-19 15:54:05

标签: c# regex

我有一个字符串,其中包含“^ ##”形式的颜色,其中##可以是00-99。

我写了正则表达式来检测和替换这些颜色:

Input = Regex.Replace(Input, "\^[0-9][0-9]", "");

然而,编译器似乎不喜欢\ ^作为检测“^”字符的方法(给出无效的转义码错误)。那么如何在c#regex中查找^字符?

4 个答案:

答案 0 :(得分:2)

您可以尝试在Regex中使用逐字字符串

Input = Regex.Replace(Input, @"\^[0-9][0-9]", "");

如果您想了解有关字符串文字的更多信息,请在MSDN上阅读此article

答案 1 :(得分:2)

这是因为,没有这样的转义序列(\^

您可以使用:

  • C#逐字字符串:@"\^[0-9][0-9]"
  • 两个反斜杠而不是一个:"\\^[0-9][0-9]"

提示:

  • 字符类[0-9]等同于简写\d
  • 您可以使用[0-9][0-9](或[0-9]{2})代替\d{2}。当你有更多的重复时,这会有所帮助。

参考文献:

Character classesRepetition

答案 2 :(得分:0)

尝试使用双斜杠"\\^"

斜杠是创建字符串对象本身的控制字符。

但是你希望字符串本身包含一个斜杠。

答案 3 :(得分:0)

由于C#编译器本身对字符串中的\赋予特殊含义,如果您希望字符串包含\,则必须执行以下两项操作之一:

  • 通过加倍来逃避它:\\

  • 在开头"前面加上@@"\",使字符串成为逐字字符串 - 但请注意,后一个选项会更改引号的引用方式({{1}必须转义字符串中的字符串