Python字母数字正则表达式

时间:2014-04-10 19:18:11

标签: python regex match

下面我有以下正则表达式:

alphanumeric = compile('^[\w\d ]+$')

我正在针对此正则表达式运行当前数据:

Tomkiewicz Zigomalas Andrade Mcwalters 

我有一个单独的正则表达式来识别字母字符,但上面的数据仍然符合字母数字标准。

编辑:如何停止与上述正则表达式匹配的唯一alpha数据?

2 个答案:

答案 0 :(得分:1)

描述:它可以有两种形式:

  1. 从数字字符开始,然后应该有一些字符,然后可以使用任意数量的字母数字字符。
  2. 以字母开头,然后是一些数字,然后是任意数量的字母数字字符。
  3. 演示:

    >>> an_re = r"(\d+[A-Z])|([A-Z]+\d)[\dA-Z]*"
    >>> re.search(an_re, '12345', re.I) # not acceptable string
    >>> re.search(an_re, 'abcd', re.I) # not acceptable string 
    >>> re.search(an_re, 'abc1', re.I) # acceptable string 
    <_sre.SRE_Match object at 0x14153e8>
    >>> re.search(an_re, '1abc', re.I)
    <_sre.SRE_Match object at 0x14153e8>
    

答案 1 :(得分:1)

使用预测来断言至少存在一个alpha和至少一个数字的条件:

(?=.*[a-zA-Z])(?=.*[0-9])^[\w\d ]+$

上面的RegEx使用两个前瞻来首先检查每个条件的整个字符串。前瞻搜索直到找到指定范围内的单个字符。如果断言匹配则转到下一个断言。我从OP的原始尝试借来的最后一部分,只是确保整个字符串由一个或多个下/上alpha,下划线,数字或空格组成。