【问题标题】:Regex matches unspecified ampersand character in C#.NET正则表达式匹配 C#.NET 中未指定的 & 字符
【发布时间】:2013-11-27 14:46:55
【问题描述】:

我正在尝试将一组字符与一个模式匹配。但是&符号匹配没有指定。你能解释一下为什么 Regex 会这样吗?

string input = "<font face=\"Verdana\">É-øá-É-</font><font face=\"Arial\"> ;&: ant ;ghj\n</font>";

Regex Matcher = new Regex("</font><font face=\"[\\w\\s-_]+\">[ -,:;\\.\\r\\n\\/\\]\\)]+");

string output = Matcher.Match(input);

我需要输出为

"&lt;/font&gt;&lt;font face=\"Arial\"&gt; ;" 因为字体开始标记后的可匹配字符不包含 & 字符。

但我得到的实际输出是

"&lt;/font&gt;&lt;font face=\"Myriad\"&gt; ;&amp;: "

为什么这个正则表达式也匹配 & 字符?

【问题讨论】:

    标签: c# .net regex escaping


    【解决方案1】:

    你应该转义破折号-

     [ -,
    

    表示匹配空格和逗号之间的所有字符。

    SPACE => 32
    COMMA => 44
    APERSTAND => 38 (matches)
    

    【讨论】:

    • 啊,这确实是我的粗心大意。谢谢。
    【解决方案2】:

    你忘记转义破折号'-'改为:

    Regex Matcher = new Regex("</font><font face=\"[\\w\\s-_]+\">[ \\-,:;\\r\\n\\/\\]\\)]+");
    

    【讨论】:

    • 感谢您的快速回复。
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多