我正在编写一个.NET正则表达式,它需要匹配除控制字符之外的所有ASCII和扩展ASCII字符.
为此,我查阅了ASCII表,似乎所有这些字符都具有x20到xFF的ASCII编码.
所以我想
[\x20-\xFF]
应该能够匹配我需要的所有角色.但是,实际上,某些角色可以匹配,而其他角色则不能.例如,如果使用在线工具http://regexhero.net/tester/进行测试,或者编写一个简单的C#程序,您会发现某些字符如“ç”(xE7)可以匹配,但某些字符如“œ”(x9C)则不能.
有谁知道为什么我的正则表达式不起作用?
谢谢,
解决方法
我试图重现您的错误,并发现您的代码没有错:
String pattern = @"[\x20-\xFF]"; // All ANSII for (Char ch = ' '; ch <= 255; ++ch) if (!Regex.IsMatch(ch.ToString(),pattern)) Console.Write("Failed!"); // All non-ANSII for (Char ch = (Char)256; ch < Char.MaxValue; ++ch) if (Regex.IsMatch(ch.ToString(),pattern)) Console.Write("Failed!");
然后我检查了你的样品:
((int)'ç').ToString("X2"); // <- returns E7,OK ((int)'œ').ToString("X2"); // <- returns 153 NOT x9C
注意,’ – ‘(x153)实际上在[0x20..0xFF]之外,这就是匹配返回false的原因.所以我猜你有一个错字
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。