Python字母数字正则表达式
下面我有一个正则表达式:
alphanumeric = compile('^[\w\d ]+$')
我正在用当前的数据来测试这个正则表达式:
Tomkiewicz Zigomalas Andrade Mcwalters
我还有一个单独的正则表达式,用来识别只有字母的字符,但上面的数据仍然符合字母和数字的标准。
补充:我该怎么做才能让只有字母的数据不符合上面的正则表达式呢?
2 个回答
1
使用一个前瞻来检查字符串中是否至少有一个字母和一个数字:
(?=.*[a-zA-Z])(?=.*[0-9])^[\w\d ]+$
上面的正则表达式使用了两个前瞻,首先检查整个字符串是否满足每个条件。前瞻会一直搜索,直到找到指定范围内的一个字符。如果这个条件成立,就会继续检查下一个条件。最后一部分是我从提问者的原始尝试中借来的,确保整个字符串由一个或多个小写字母、大写字母、下划线、数字或空格组成。
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>