加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:12:00 所属栏目:百科 来源:网络整理
导读:我正在编写一个.NET正则表达式,它需要匹配除控制字符之外的所有ASCII和扩展ASCII字符. 为此,我查阅了ASCII表,似乎所有这些字符都具有x20到xFF的ASCII编码. 所以我想 [x20-xFF] 应该能够匹配我需要的所有角色.但是,实际上,某些角色可以匹配,而其他角色则不
我正在编写一个.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的原因.所以我猜你有一个错字

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读