【问题标题】:How to escape a C# regular expression in the correct way?如何以正确的方式转义 C# 正则表达式?
【发布时间】:2011-03-20 18:21:59
【问题描述】:

这是我的正则表达式:

<tr>[\s]+?<td class="filePathActiv"[\w\W]+?<div class="Overflow">[\s]*?(?<name>[\w\W]+?)&nbsp[\w\W]+?\(wygasa (?<wygasa>[\d\s\-\:\s]+)\)[\w\W]+?class="fileDown"[\w\W]+?<a href="(?<address>[\w\W]+?)">[\w\W]+?<td width="[\d]+?">(?<sizeMB>[\d\.]+?) MB</td>[\w\W]+?<input [\w\W]+? name="(?<path>[\w\W]+?)" [\w\W]+? value="(?<value>[\w\W]+?)"[\w\W]+?/>

我应该如何逃避这个正则表达式?我试过这样但它不起作用:

new Regex("<tr>[\\s]+?<td class=\"filePathActiv\"[\\w\\W]+?<div class=\"Overflow\">[\\s]*?(?<name>[\\w\\W]+?)&nbsp[\\w\\W]+?\\(wygasa (?<date>[\\d\\s\\-\\:\\s]+)\\)[\\w\\W]+?class=\"fileDown\"[\\w\\W]+?<a href=\"(?<address>[\\w\\W]+?)\">[\\w\\W]+?<td width=\"[\\d]+?\">(?<sizeMB>[\\d\\.]+?) MB</td>[\\w\\W]+?<input [\\w\\W]+? name=\"(?<path>[\\w\\W]+?)\" [\\w\\W]+? value=\"(?<value>[\\w\\W]+?)\"[\\w\\W]+?/>", RegexOptions.IgnoreCase);

【问题讨论】:

    标签: c# .net regex escaping


    【解决方案1】:

    你应该把它放在@"..." 字符串中。
    然后,您需要做的就是将每个" 替换为""

    【讨论】:

    • 另外,请查看regexhero.net/tester 的“.net”按钮。如果您以纯格式粘贴正则表达式,它将使用 @"..." 为您生成 C# 代码。 (另一位用户刚刚在另一个帖子中向我指出了这一点。)
    【解决方案2】:

    我认为你应该使用Regex.Escape() 方法。

    【讨论】:

      猜你喜欢
      • 2013-01-18
      • 2011-08-05
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多