python中search和match的区别_Python-re.search和re.match有什么区别?

小编典典

re.match锚定在字符串的开头。这与换行无关,因此它与^在模式中使用的方式不同。

如重新匹配文档所述:

如果字符串开头的零个或多个字符 与正则表达式模式匹配,则返回相应的MatchObject实例。None如果字符串与模式不匹配,则返回;否则返回false。请注意,这与零长度匹配不同。

注意:如果要在字符串中的任何位置找到匹配项,请search() 改用。

re.search搜索整个字符串,如文档所述:

扫描字符串以查找正则表达式模式产生匹配的位置,然后返回相应的MatchObject实例。None如果字符串中没有位置与模式匹配,则返回;否则返回false。请注意,这与在字符串中的某个点找到零长度匹配不同。

因此,如果你需要匹配字符串的开头,或者匹配整个字符串,请使用match。它更快。否则使用search。

该文档中有一个专门针对matchvs.的部分search,还涵盖了多行字符串:

python提供两种不同的基本操作基于正则表达式:match检查是否有比赛 才刚刚开始的字符串,而search用于匹配检查 任何地方的字符串(这是Perl并默认情况下)。

请注意,match可以从不同的search 使用开头的正则表达式时,即使'^':'^'只在字符串的开头匹配,或 MULTILINE模式换行也紧随其后。仅当模式在字符串的开头( 无论模式如何)或在可选 参数指定的开始位置匹配(无论换行符是否在其前面)时,match操作才会成功pos。

现在,足够多的谈话。现在来看一些示例代码:

# example code:

string_with_newlines = """something

someotherthing"""

import re

print re.match('some', string_with_newlines) # matches

print re.match('someother',

string_with_newlines) # won't match

print re.match('^someother', string_with_newlines,

re.MULTILINE) # also won't match

print re.search('someother',

string_with_newlines) # finds something

print re.search('^someother', string_with_newlines,

re.MULTILINE) # also finds something

m = re.compile('thing$', re.MULTILINE)

print m.match(string_with_newlines) # no match

print m.match(string_with_newlines, pos=4) # matches

print m.search(string_with_newlines,

re.MULTILINE) # also matches

2020-02-05

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值