相关疑难解决方法(0)

re.search和re.match有什么区别?

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

我已经阅读了文档(当前文档),但我似乎永远不会记住它.我不得不查阅并重新学习它.我希望有人会用例子清楚地回答它,以便(也许)它会坚持到底.或者至少我会有一个更好的地方回答我的问题,重新学习它将花费更少的时间.

python regex search match

483
推荐指数
8
解决办法
29万
查看次数

re.match vs re.search性能差异

我试图比较re.matchre.search使用timeit模块,我发现当我想要找到的字符串位于字符串的开头时,匹配比搜索更好.

>>> s1 = '''
... import re
... re.search(r'hello','helloab'*100000)
... '''
>>> timeit.timeit(stmt=s1,number=10000)
32.12064480781555


>>> s = '''
... import re
... re.match(r'hello','helloab'*100000)
... '''
>>> timeit.timeit(stmt=s,number=10000)
30.9136700630188
Run Code Online (Sandbox Code Playgroud)

现在,我知道匹配在字符串的开头查找模式并返回一个对象(如果找到),但我想知道搜索是如何操作的.

在开头找到字符串后,搜索是否会执行任何额外的匹配,从而减慢它的速度?

更新

在使用@David Robinsons代码后,我得到了他的结果.

>>> print timeit.timeit(stmt="r.match('hello')",
...              setup="import re; s = 'helloab'*100000; r = re.compile('hello')",
...              number = 10000000)
49.9567620754
>>> print timeit.timeit(stmt="r.search('hello')",
...              setup="import re; s = 'helloab'*100000; r = re.compile('hello')",
...             number = 10000000)
35.6694438457
Run Code Online (Sandbox Code Playgroud)

那么,更新后的问题现在为什么search表现不佳match

python regex

14
推荐指数
2
解决办法
4292
查看次数

标签 统计

python ×2

regex ×2

match ×1

search ×1