Python-re.search和re.match有什么区别?
search()和Python 模块中的match()函数和有什么区别?re
我已经阅读了文档(当前文档),但是我似乎从未记得它。我一直在查找并重新学习它。我希望有人会用示例清楚地回答它,以便(也许)它会贴在我的头上。或者至少我将有一个更好的地方来回答我的问题,并且重新学习它所花的时间会更少。
回答:
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
以上是 Python-re.search和re.match有什么区别? 的全部内容, 来源链接: utcz.com/qa/416788.html