Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式匹配C#.NET中未指定的符号和字符_C#_.net_Regex_Escaping - Fatal编程技术网

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

正则表达式匹配C#.NET中未指定的符号和字符,c#,.net,regex,escaping,C#,.net,Regex,Escaping,我正在尝试将一组字符与模式匹配。但是,在没有指定的情况下,符号是匹配的。你能解释一下为什么正则表达式会这样吗 string input = "<font face=\"Verdana\">É-øá-É-</font><font face=\"Arial\"> ;&: ant ;ghj\n</font>"; Regex Matcher = new Regex("</font><font face=\"[\\w\\s-_]+

我正在尝试将一组字符与模式匹配。但是,在没有指定的情况下,符号是匹配的。你能解释一下为什么正则表达式会这样吗

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);
string input=“ø-ø-É-;&:ant;ghj\n”;
正则表达式匹配器=新正则表达式(“[-,:;\\.\\r\\n\\/\\]\\)]+”;
字符串输出=Matcher.Match(输入);
我需要输出为

“;”
因为字体开始标记后的可匹配字符不包含&character

但我得到的实际输出是

”;&:“


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

您应该转义破折号
-

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

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

您忘记逃过破折号“-”更改为:

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

Aah,那的确是我的粗心。谢谢。谢谢你的快速回复。