代码之家  ›  专栏  ›  技术社区  ›  chimeracoder

Python正则表达式中的插入符号匹配问题

  •  2
  • chimeracoder  · 技术社区  · 16 年前

    我有下面的正则表达式,我认为它应该匹配任何不是字母数字的字符,“!”, '?',或“.”

    re.compile('[^A-z ?!.]')
    

    然而,我在iPython中得到了以下奇怪的结果:

    In [21]: re.sub(a, ' ', 'Hey !$%^&*.#$%^&.')
    Out[21]: 'Hey !  ^  .   ^ .'
    

    当我在正则表达式中转义“.”时,结果是一样的。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Mark Byers    16 年前

    a z 这很重要。 A-z 包括ASCII值65(A)和122(Z)之间的所有字符,其中包括插入符号(ASCII代码94)。

    re.compile('[^A-Za-z ?!.]')
    

    例子:

    import re
    regex = re.compile('[^A-Za-z ?!.]')
    result = regex.sub(' ', 'Hey !$%^&*.#$%^&.')
    print result
    

    结果:

    Hey !     .     .
    
        2
  •  0
  •   Bob    16 年前

    插入符号位于ASCII的大写和小写之间。你需要 [^a-zA-Z ?!\.]