跳到主要内容

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

参考答案:

在Python的正则表达式库re中,search()match()方法都是用于在字符串中查找与正则表达式匹配的子串,但它们的行为有一些不同。

  1. 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的起始部分。

  1. 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()