Python正则表达式:re.sub,re.match&的使用差异重新研究白名单

时间:2014-08-27 16:34:22

标签: python regex

以下所有3个陈述仅允许使用字母,数字,下划线和连字符通过。使用re.subre.match和& re.search以下?即,是否有可能为str的值,其中下面的`if语句的执行路径可能与其中任何一个不同?

str = 'some-random-string *&- '

if re.sub(r'[^a-zA-Z0-9_-]', '',  str) == str:
    #do stuff

if re.match(r'[a-zA-Z0-9_-]+$', str):
    #do stuff

if re.search(r'^[a-zA-Z0-9_-]+$', str):
    #do stuff

1 个答案:

答案 0 :(得分:1)

使用re.sub,您会收到一个新字符串,并检查它是否与检测某些内容是否被删除的内容不相同 - 这并不完全符合要求。

使用re.search^来锚定匹配的开头与使用re.match相同。

使用re.match更加明确您正在尝试实现的内容, 以匹配该模式,否则它无效 - 它也可以提前快捷...

简而言之 - 坚持re.match为您的目的。