【问题标题】:How to match alphabetical chars without numeric chars with Python regexp?如何使用 Python 正则表达式匹配没有数字字符的字母字符?
【发布时间】:2009-11-04 13:30:16
【问题描述】:

使用 Python 模块 re,如何在不匹配数字字符(可以被“[0-9]”匹配的字符)的情况下获得“\w”(匹配字母数字字符)的等价物?

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

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

下划线不应匹配。

编辑:

  • 我没有考虑过下划线状态,因此感谢有关“\w”匹配的警告以及解决此问题的选定解决方案。

【问题讨论】:

    标签: python regex


    【解决方案1】:

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

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

    【讨论】:

    • 很好,来自我的 +1。没想到那个。
    • 好主意,可以在其他模式和其他正则表达式实现中重复使用。
    【解决方案2】:
    (?!\d)\w
    

    后面没有数字的位置,然后是\w。有效地抵消了数字,但通过使用负前瞻允许 \w 范围。

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

    (?=\D)\w
    

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

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

    【讨论】:

    • 别忘了 \w 也包含下划线。
    • OP 对下划线只字未提。这有什么关系?
    • 以防 OP 没有预料到。我喜欢你的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2016-09-01
    • 2011-01-09
    • 1970-01-01
    • 2013-06-03
    • 2013-04-17
    • 1970-01-01
    相关资源
    最近更新 更多