python正则表达式相当于/ [^ a-f0-9] / i

时间:2014-12-12 02:18:39

标签: python regex

问题究竟是什么问题。 相当于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'; 

一直说“不匹配”。

2 个答案:

答案 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条件内安全地使用它。