【问题标题】:regex pattern for a range and above 127范围及以上 127 的正则表达式模式
【发布时间】:2012-01-10 07:40:46
【问题描述】:

我需要一个正则表达式,使其匹配以下内容以及 127 以上的任何 ascii(即 7F 十六进制及以上)。以下适用于给定范围。

string pattern = "[\x00-\x1F]";

【问题讨论】:

  • 好吧,你试过什么?它奏效了吗?如果没有,为什么不呢?

标签: regex c#-3.0


【解决方案1】:

要么:

  1. 接受两个范围内的字符(使用交替,[a-b]|[x-z]),或;
  2. 在一个字符组中使用多个范围 ([a-bx-z]),或者;
  3. 否定字符组中的反转范围([^c-w])
    • 否定包括一大堆在c之前和w之后的东西,所以它与前两者不[必然]相同,但这可以用作优势。

a、b、c、w、x 和 z 的适当值留给读者作为 [琐碎的] 练习。

编码愉快。

【讨论】:

    【解决方案2】:

    试试 or 运算符 | (管道)

    string pattern = "[\x00-\x1f]|[\x7f-\uffff]";
    

    FF hex 将是最大的 ASCII 值。

    这里有一份备忘单供进一步参考: http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

    【讨论】:

    • 我认为应该在字符类中删除空格?另外,这里不需要括号……而且0xff以上还有Unicode字符……
    • 是的,所以看起来范围应该更正确[\x7f-\xffff]?
    • 使用“\uffff”。 "\xffff" 等同于 "\xff" + "ff"。
    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2017-10-06
    相关资源
    最近更新 更多