前言
re.search扫描整个字符串并返回第一个成功的匹配。re.findall返回字符串中所有不重叠匹配项的列表,如果没有匹配到返回空list不会报错。
search匹配对象有3个方法:group() groups() groupdict() ,这3个方法使用上会有一些差异。
如果只需匹配一个,匹配到就结束就用search,匹配全部就用findall
re.search 源码解读
search扫描整个字符串并返回第一个成功的匹配,如果没匹配到返回None
函数参数说明:
pattern匹配的正则表达式
string要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
def search(pattern, string, flags=0):
"""Scan through string looking for a match to the pattern, returning
a match object, or None if no match was found."""
return _compile(pattern, flags).search(string)
跟前面findall一样有三种方式
import re
kk = re.compile(r'\d+') # 匹配数字
res1 = kk.search('one1two2three3four4')
print(res1)
# <_sre.sre_match object span="(3," match="1">
kk = re.compile(r'\d+')
res2 = re.search(kk,"one123two2")
print(res2)
# <_sre.sre_match object span="(3," match="123">
# 也可以直接在search传2个参数
res3 = re.search(r'\d+', "one123two2")
print(res3)
print(res3.group(0))
# <_sre.sre_match object span="(3," match="123">
# 123