跳到主要内容

Python里面match()和search()的区别?

参考答案:

在Python的正则表达式库re中,match()search()都是用来搜索字符串的方法,但它们之间有一些关键的区别。

re.match(pattern, string, flags=0)方法尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。也就是说,re.match()只会在字符串的开始位置进行匹配。

例如:

import re

pattern = re.compile(r'world')
match = pattern.match('Hello, world!')
print(match)  # None,因为 'world' 不在字符串开始处

match = pattern.match('world is beautiful!')
print(match)  # <re.Match object; span=(0, 5), match='world'>,因为 'world' 在字符串开始处

re.search(pattern, string, flags=0)方法扫描整个字符串,并返回第一个成功的匹配。如果没有找到任何匹配项,它将返回None。re.search()`会扫描整个字符串来查找模式。

例如:

import re

pattern = re.compile(r'world')
match = pattern.search('Hello, world!')
print(match)  # <re.Match object; span=(7, 12), match='world'>,因为 'world' 在字符串中,尽管不在开始处

match = pattern.search('Hello, planet!')
print(match)  # None,因为 'world' 不在字符串中

总的来说,re.match()只会在字符串的开始位置进行匹配,而re.search()会扫描整个字符串来查找模式。如果你只关心字符串的开始位置是否有匹配,那么使用re.match();如果你希望在整个字符串中查找匹配,那么使用re.search()