正则表达式匹配C#.NET中未指定的&符号

时间:2013-11-27 14:46:55

标签: c# .net regex escaping

我试图将一组字符与模式匹配。但是&符号没有指定匹配。你能解释为什么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);

我需要输出

"</font><font face=\"Arial\"> ;" 因为字体开始标记之后的匹配字符不包含&amp;字符。

但我得到的实际输出是

"</font><font face=\"Myriad\"> ;&: "

为什么这个正则表达式匹配&amp;人物呢?

2 个答案:

答案 0 :(得分:1)

你应该逃脱破折号-

 [ -,

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

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

答案 1 :(得分:1)

你忘了逃避冲刺&#39; - &#39;改为:

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