Python re模块中的search()和match()函数有什么区别?

我读过Python 2文档(Python 3文档),但我似乎从来都不记得它。我得不停地查资料,重新学习。我希望有人能用例子清楚地回答这个问题,这样(也许)我就能记住它了。或者至少我可以有一个更好的地方带着我的问题回来,重新学习的时间也会更少。


当前回答

迅速的回答

re.search('test', ' test')      # returns a Truthy match object (because the search starts from any index) 

re.match('test', ' test')       # returns None (because the search start from 0 index)
re.match('test', 'test')        # returns a Truthy match object (match at 0 index)

其他回答

搜索:在字符串的任何地方查找,并返回一个匹配对象。

Match:查找字符串开头的内容并返回一个匹配对象。

Re.search在整个字符串中搜索模式,而re.match不搜索模式;如果不匹配,则只能在字符串的开头匹配它。

您可以参考下面的示例来了解re.match和re.search的工作原理

a = "123abc"
t = re.match("[a-z]+",a)
t = re.search("[a-z]+",a)

Re.match将返回none,但re.search将返回abc。

更短:

搜索扫描整个字符串。 Match只扫描字符串的开头。

以下是前任说的:

>>> a = "123abc"
>>> re.match("[a-z]+",a)
None
>>> re.search("[a-z]+",a)
abc

Re.match尝试匹配字符串开头的模式。Re.search尝试在整个字符串中匹配模式,直到找到匹配。