代码之家  ›  专栏  ›  技术社区  ›  Blam

正则表达式中的“^in”出错

  •  0
  • Blam  · 技术社区  · 14 年前

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

    我编写regex来检测和替换这些颜色:

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

    4 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    4 年前

    那是因为,嗯,没有这样的逃逸序列( \^ )

    您可以使用:

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

    提示:

    • [0-9] 相当于速记 \d
    • 而不是 [0-9][0-9] 你可以用 [0-9]{2} (或 \d{2}

    参考文献:

    Character classes , Repetition

        2
  •  2
  •   jethro    14 年前

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

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

    article

        3
  •  0
  •   Sanjay Manohar    14 年前

    试试双斜杠 "\\^"

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

    但是您希望字符串本身包含斜杠。

        4
  •  0
  •   AakashM    14 年前

    因为C编译器本身赋予 \ 在字符串中,如果希望字符串包含 \

    • 通过加倍来逃避: \\

    • 通过在开头前面添加一个逐字的字符串 " 用一个 @ : @"\" -但请注意,后一个选项会改变引用的方式( )在字符串中必须转义