【问题标题】:Regular expression: take string literally with special re-characters正则表达式:使用特殊的重新字符从字面上获取字符串
【发布时间】:2011-08-12 18:00:44
【问题描述】:

也许很简单的问题..

String text = "fake 43 60 fake";
String patt = "[43.60]";

Match m = Regex.Match(text, patt)

在这种情况下,m.Success = true 因为点替换任何字符(也是空格)。但我必须在 patt 中逐字匹配字符串。

当然,我可以在 patt 中的点之前使用 '\'

String patt = @"[43\.60]";

所以 m.Success = false,但在正则表达式世界中还有更多特殊字符。

我的问题是,我怎样才能使用正则表达式来将字符串按字面意思设置。所以“43.60”必须与“43.60”完全匹配。 '43?60' 必须匹配 '43?60'....

谢谢。

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    要获得正则表达式安全的文字:

    string escaped = Regex.Escape(input);
    

    例如,要匹配 literal [43.60]:

    string escaped = Regex.Escape(@"[43.60]");
    

    给出带有内容的字符串:\[43\.60]

    然后您可以使用此 转义 内容来创建正则表达式;例如:

    string find = "43?60";
    string escaped = Regex.Escape(find);
    bool match = Regex.IsMatch("abc 43?60", escaped);
    

    请注意,在许多情况下,您会希望将转义字符串与其他一些正则表达式片段组合以形成完整的模式。

    【讨论】:

      猜你喜欢
      • 2017-07-16
      • 2019-04-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多