问题究竟是什么问题。 相当于Javascript的Python检查是否存在不是a-f或0-9的字符。不区分大小写。
我的尝试是
re.match('[^a-f0-9]',str,re.I)
编辑: 我的测试
import re;
teststrA='7z';
testsrB='5k';
if re.match('[^a-f0-9]',teststrA,re.I) or re.match('[^a-f0-9]',teststrB,re.I):
print 'found match';
else:
print 'no match';
一直说“不匹配”。
答案 0 :(得分:1)
您的问题可能是Python的re.match
已锚定。因此,如果正则表达式在字符串的开头匹配,它将仅返回true。如果您想查看它是否与字符串中的任何位置匹配,请改用re.search
。
请注意,re.search
不返回布尔值,但如果匹配则返回Match
个对象,否则返回None
。
答案 1 :(得分:0)
如果您在字符串中的任何位置(不仅仅是在开头)查找有问题的字符,那么您可能应该使用search
而不是match
。
re.search('[^a-f0-9]',str,re.I)
如果匹配则返回Match
对象,否则为None
单例。所以你应该按照你在评论中提出的方式在if
条件内安全地使用它。