如果字符串“x”包含任何字母或数字,请打印该字符串。 如何使用正则表达式? 下面的代码是错误的
if re.search('^[A-Z]?[a-z]?[0-9]?', i):
print i
答案 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。它可以很好地解释正则表达式。
答案 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
...