如何匹配没有数字字符的字母字符与Python正则表达式?

时间:2009-11-04 13:30:16

标签: python regex

使用Python模块re,如何获得“\ w”(与字母数字字符匹配)的等价物而不匹配数字字符(可以通过“[0-9]”匹配的那些字符)?

请注意,基本需要是匹配任何字符(包括所有unicode变体)而没有数字字符(与“[0-9]”匹配)。

作为最后一点,我真的需要一个正则表达式,因为它是更大的正则表达式的一部分。

不应匹配下划线。

编辑:

  • 我没有考虑过强调状态,所以感谢关于这个被“\ w”匹配的警告以及解决这个问题的当选解决方案。

2 个答案:

答案 0 :(得分:32)

您想要[^\W\d]:不是的字符组(数字或不是字母数字)。如果您不想要它们,则在该否定集中添加下划线。

如果你问我,有点扭曲,但它有效。应该比先行替代方案更快。

答案 1 :(得分:9)

(?!\d)\w

未跟随数字的位置,然后是\w。有效取消数字但通过使用否定预测允许\w范围。

同样可以表示为积极前瞻和\D

(?=\D)\w

要匹配其中的多个,请用parens括起来:

(?:(?!\d)\w)+