匹配.NET Regex中的扩展ASCII字符

use*_*645 6 c# regex ascii extended-ascii

我正在编写一个.NET正则表达式,该表达式需要匹配除控制字符之外的所有ASCII和扩展ASCII字符。

为此,我查阅了ASCII表,似乎所有这些字符的ASCII编码为x20到xFF。

所以我想

[\ x20- \ xFF]

应该能够匹配我需要的所有字符。但是,实际上,某些字符可以匹配,而另一些则不能。例如,如果您使用在线工具http://regexhero.net/tester/进行测试,或者编写了一个简单的C#程序,您会发现可以匹配某些字符,例如“ç”(xE7),而某些字符则可以匹配。因为“œ”(x9C)不能。

有谁知道为什么我的正则表达式不起作用?

谢谢,

Dmi*_*nko 3

我尝试重现您的错误,但发现您的代码没有任何问题:

\n\n
String pattern = @"[\\x20-\\xFF]";\n\n// All ANSII \nfor (Char ch = \' \'; ch <= 255; ++ch)\n  if (!Regex.IsMatch(ch.ToString(), pattern)) \n    Console.Write("Failed!");\n\n// All non-ANSII\nfor (Char ch = (Char)256; ch < Char.MaxValue; ++ch)\n  if (Regex.IsMatch(ch.ToString(), pattern)) \n    Console.Write("Failed!");\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我检查了你的样品:

\n\n
 ((int)\'\xc3\xa7\').ToString("X2"); // <- returns E7, OK\n ((int)\'\xc5\x93\').ToString("X2"); // <- returns 153 NOT x9C \n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,\'\xc5\x93\'(x153)实际上位于外部 [0x20..0xFF],这就是匹配返回 的原因false。所以我猜你有一个错字

\n