use*_*645 6 c# regex ascii extended-ascii
我正在编写一个.NET正则表达式,该表达式需要匹配除控制字符之外的所有ASCII和扩展ASCII字符。
为此,我查阅了ASCII表,似乎所有这些字符的ASCII编码为x20到xFF。
所以我想
[\ x20- \ xFF]
应该能够匹配我需要的所有字符。但是,实际上,某些字符可以匹配,而另一些则不能。例如,如果您使用在线工具http://regexhero.net/tester/进行测试,或者编写了一个简单的C#程序,您会发现可以匹配某些字符,例如“ç”(xE7),而某些字符则可以匹配。因为“œ”(x9C)不能。
有谁知道为什么我的正则表达式不起作用?
谢谢,
我尝试重现您的错误,但发现您的代码没有任何问题:
\n\nString 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!");\nRun 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 \nRun Code Online (Sandbox Code Playgroud)\n\n请注意,\'\xc5\x93\'(x153)实际上位于外部 [0x20..0xFF],这就是匹配返回 的原因false。所以我猜你有一个错字
| 归档时间: |
|
| 查看次数: |
3228 次 |
| 最近记录: |