python正则表达式中字符类的一部分除外

时间:2019-03-05 16:06:39

标签: python regex

除正则表达式下面的\ d外,我怎么能?

^[\d\w ]+$

它匹配带有任何单词和数字以及空格字符的字符串。我想将其更改为接受带有任何单词和空格的字符串。

我尝试使用正则表达式,但它也排除数字和空格。

^[^\d\w ]+$

1 个答案:

答案 0 :(得分:1)

您可以使用

^(?:[^\W\d]| )+$

请参见regex demo。也可以写为^(?:(?!\d)[\w ])+$

详细信息

  • ^-字符串的开头
  • (?:[^\W\d]| )+-1个或更多
    • [^\W\d]-除非单词和数字字符外的其他字符
    • |-或
    • -空格
  • $-字符串的结尾。

^(?:(?!\d)[\w ])+$中,可能与任何单词和空格字符匹配的[\w ](?!\d)限制,因此不匹配数字。

或者,如果您只需要ASCII字:

^[a-zA-Z_ ]+$

请记住,由于\w匹配_个字符,因此它也将允许使用下划线。如果不需要,请使用^(?:[^\W\d_]| )+$ / ^(?:(?![\d_])[\w ])+$ / ^[a-zA-Z ]+$