【问题标题】:Specific regex in C#C# 中的特定正则表达式
【发布时间】:2014-12-27 11:37:44
【问题描述】:

有人能告诉我为什么下面的正则表达式在 C# 中不起作用吗? 谢谢。

Regex 101

我试图从以下字符串中获取 raudi06(如链接中所述): "\n http://dsde.innogamescdn.com/8.30.1/23852/graphic/welcome/player_points.png?3ba0c\">\n raudi06\t\t\t\t\t\t\t\t \t\t\t"

代码来了:

        Match match = new Regex(@"[^>]+>\\n\s+(.*?)\\").Match(playerText);
        return match.Groups[1].Value;

该值是一个空字符串,与 regex101.com 上的正则表达式解释相反。 这是由于 C# 正则表达式的味道吗?我对正则表达式了解不多,希望您了解这些具体细节。

提前感谢您!

【问题讨论】:

  • is \n 在您的输入中是文字 \、n 字符还是单个换行符?
  • @Avinash Raj 我不确定,但我认为这是字面意思。我从 Visual Studio 变量监视窗口中复制了它。

标签: c# html regex


【解决方案1】:

事实上,空白字符 (\n, \t) 不是字面的。 我通过右键单击 Visual Studio 监视窗口中的变量并选择 value 选项发现了这一点,该选项显示的字符串没有文字空白字符。

[^>]+>\s+([^\s]*)

确实可以匹配字符串。 感谢您的提示,Avinash Raj。

【讨论】:

    【解决方案2】:

    试试这个:

    System.Text.RegularExpressions.Regex.Match(input, "[^>]+>\s+(.*?)\s", System.Text.RegularExpressions.RegexOptions.Multiline)
    

    【讨论】:

      【解决方案3】:

      当您在字符串中看到 \n 和 \t 时,它们只是换行符和制表符的单个字符占位符。这意味着你永远不会通过寻找 \ 和 n 来找到 \n。

      您正在使用的模式将专门寻找后跟文字 n 的反斜杠。要改变这一点,只需删除一个反斜杠,留下 \n 而不是 \n

      下一个挑战是字符串的结束标准。在您的模式中,您再次寻找反斜杠 (\),但没有,只有制表符 (\t)。这个你可以改成 \t ,它应该可以工作。

      Match match = new Regex(@"[^>]+>\n\s+(.*?)\t").Match(playerText);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-06
        • 2015-03-23
        • 2019-06-13
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多