繁体   English   中英

Python正则表达式:re.sub,re.match和re.search用于白名单的用法不同

[英]Python regex : Difference in usage of re.sub, re.match & re.search for whitelisting

下面的所有3条语句仅允许字母,数字,下划线和连字符通过。 在下面使用re.subre.matchre.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM