none
如何转义正则表达式中的特殊字符 RRS feed

  • 问题

  • 最近被正则表达式中的特殊字符搞晕了,还在网上搜了段代码,可惜无法编译通过!

    我的主要目的是对用户输入中的正则敏感字符进行安全转义替换,以防止正则表达时构造时失败

    下面是那个无法通过的代码,谁来帮我改下,或者给段代码,谢谢!
    static string RegexStringToCommonString(string regexStr)
    {
            Regex replace = new Regex("[.$^{\\[(|)*+?\\\\]");
            return replace.Replace(regexStr, (Match m) => "\\" + m.Value);
    }
    2009年9月21日 11:38

答案

  • 你好  不太清楚你的意思
    你的.net是2.0版本?

    static string RegexStringToCommonString(string regexStr)
          {
             Regex replace = new Regex("[\\()\\\\]");
             return replace.Replace(regexStr, delegate(Match m)
             {
                return "\\" + m.Value;
             });
          }
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月21日 12:45
    版主

全部回复

  • 你好  不太清楚你的意思
    你的.net是2.0版本?

    static string RegexStringToCommonString(string regexStr)
          {
             Regex replace = new Regex("[\\()\\\\]");
             return replace.Replace(regexStr, delegate(Match m)
             {
                return "\\" + m.Value;
             });
          }
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月21日 12:45
    版主
  • 对,是2.0的

    主要是想把字符串中所含的正则特殊符号用\\替换掉

    抱歉公式的内容写错了([.$^{\\[(|)*+?\\\\])
    2009年9月21日 13:16
  • 对,是2.0的

    主要是想把字符串中所含的正则特殊符号用\\替换掉

    抱歉公式的内容写错了([.$^{\\[(|)*+?\\\\])

    2.0不支持那样的表达式你可以像我那样用匿名委托

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月21日 13:31
    版主