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()
。