re.search 扫描整个字符串并返回第一个成功的匹配。python
函数语法:正则表达式
re.search(pattern, string, flags=0)
函数参数说明:函数
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串。 |
flags | 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。 |
匹配成功re.search方法返回一个匹配的对象,不然返回None。spa
咱们可使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。 对象
匹配对象方法 | 描述 |
---|---|
group(num=0) | 匹配的整个表达式的字符串,group() 能够一次输入多个组号,在这种状况下它将返回一个包含那些组所对应值的元组。 |
groups() | 返回一个包含全部小组字符串的元组,从 1 到 所含的小组号。 |
例子:blog
import re print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配 print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配 (0, 3) (11, 14)
例子2:字符串
import re line = "Cats are smarter than dogs"; searchObj = re.search( r'(.*) are (.*?) .*',line,re.M|re.I) if searchObj: print("searchObj.group() :",searchObj.group()) print("searchObj.group(1):",searchObj.group(1)) print("searchObj.group(2):",searchObj.group(2)) else: print("Nothing found!!")
输出:string
searchObj.group() : Cats are smarter than dogs searchObj.group(1): Cats searchObj.group(2): smarter
re.match只匹配字符串的开始,若是字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。table
import re line = "Cats are smarter than dogs"; matchObj = re.match(r'dogs',line,re.M|re.I) if matchObj: print("match --> matchObj.group():", matchObj.group()) else: print("NO match!!") matchObj = re.search(r'dogs' ,line, re.M|re.I) if matchObj: print("search --> matchObj.group():" ,matchObj.group()) else: print("NO match!!")
输出:class
NO match!! search --> matchObj.group(): dogs