正则表达式匹配字母数字字符串

时间:2009-10-29 06:53:55

标签: python regex

如果字符串“x”包含任何字母或数字,请打印该字符串。 如何使用正则表达式? 下面的代码是错误的

if re.search('^[A-Z]?[a-z]?[0-9]?', i):
        print i

5 个答案:

答案 0 :(得分:4)

re — Regular expression operations

这个问题实际上相当棘手。不幸的是\ w包括_和[a-z]解决方案假设一个26个字母的字母表。使用以下解决方案请阅读pydoc,其中涉及LOCALE和UNICODE

"[^_\\W]"

请注意,由于您只测试存在,因此不需要使用量词 - 事实上,使用可能匹配0次的量词将返回误报。

答案 1 :(得分:2)

你想要

if re.search('[A-Za-z0-9]+', i):
    print i

答案 2 :(得分:2)

我建议您查看RegexBuddy。它可以很好地解释正则表达式。 RegexBuddy

RegexBuddy

RegexBuddy

答案 3 :(得分:1)

[A-Z]?[a-z]?[0-9]?匹配可选的大写字母,后跟可选的小写字母,后跟可选的数字。所以,它也匹配一个空字符串。您正在寻找的是:[a-zA-Z0-9],它将匹配单个数字,小写或大写字母。

如果你需要检查ascii范围之外的字母(和数字),如果你的正则表达式支持它,请使用它:[\p{L}\p{N}]\p{L}匹配任何字母和\p{N}任何数字。

答案 4 :(得分:0)

不需要正则表达式。

>>> a="abc123"
>>> if True in map(str.isdigit,list(a)):
...  print a
...
abc123
>>> if True in map(str.isalpha,list(a)):
...  print a
...
abc123
>>> a="##@%$#%#^!"
>>> if True in map(str.isdigit,list(a)):
...  print a
...
>>> if True in map(str.isalpha,list(a)):
...  print a
...