[英]Python regex : Difference in usage of re.sub, re.match & re.search for whitelisting
下面的所有3条语句仅允许字母,数字,下划线和连字符通过。 在下面使用re.sub
, re.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
使用re.sub
您将得到一个新字符串,并检查它是否与检测是否已删除某些内容不相等-这并不完全有效。
使用带有^
re.search
锚定比赛的开始与使用re.match
相同。
使用re.match
更明确地说明了您要实现的目标,它必须与模式匹配,否则无效-它也可以提早捷径...
简而言之-为您的目的坚持re.match
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.