如何在没有数字字符的情况下使用Python regexp匹配字母字符?

vaa*_*aab 9 python regex

使用Python模块re,如何获得等效的"\ w"(匹配字母数字字符)而不匹配数字字符(那些可以匹配"[0-9]")?

请注意,基本需要是匹配任何字符(包括所有unicode变体)而不使用数字字符(与"[0-9]"匹配).

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

下划线不应该匹配.

编辑:

  • 我没有考虑过强调状态,所以感谢关于这与"\ w"匹配的警告以及解决此问题的选定解决方案.

Ali*_*ell 33

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

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

  • 很好,我+1。没想到那个。 (2认同)

Tom*_*lak 9

(?!\d)\w
Run Code Online (Sandbox Code Playgroud)

一个未跟随数字的位置,然后\w.有效地取消数字但\w通过使用负前瞻允许范围.

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

(?=\D)\w
Run Code Online (Sandbox Code Playgroud)

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

(?:(?!\d)\w)+
Run Code Online (Sandbox Code Playgroud)

  • 别忘了\ w还包含下划线. (4认同)
  • 以防万一 OP 没有预料到。我喜欢你的解决方案。 (2认同)