Python里面search()和match()的区别?
参考答案:
在Python的正则表达式库re
中,search()
和match()
方法都是用于在字符串中查找与正则表达式匹配的子串,但它们的行为有一些不同。
match()
方法:
re.match()
方法尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()
就返回None
。
例如:
import re
print(re.match('foo', 'foobar')) # <re.Match object; span=(0, 3), match='foo'>
print(re.match('foo', 'barfoo')) # None
在上面的例子中,第一个match()
调用成功,因为模式foo
匹配了字符串foobar
的起始部分。而第二个match()
调用失败,因为模式foo
并没有匹配barfoo
的起始部分。
search()
方法:
re.search()
方法会扫描整个字符串,并返回第一个成功的匹配。如果整个字符串都没有匹配,那么返回None
。
例如:
import re
print(re.search('foo', 'foobar')) # <re.Match object; span=(0, 3), match='foo'>
print(re.search('foo', 'barfoo')) # <re.Match object; span=(3, 6), match='foo'>
在上面的例子中,无论foo
出现在字符串的哪个位置,search()
都会找到它并返回。
总的来说,match()
只会在字符串的起始位置尝试匹配,而search()
会扫描整个字符串以找到匹配。如果你只想检查字符串的开始部分是否匹配,那么使用match()
。如果你想在整个字符串中查找匹配,那么使用search()
。