微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在.NET Regex中匹配扩展的ASCII字符

我正在编写一个.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] 举报,一经查实,本站将立刻删除。

相关推荐