Re.search方法

来自linux中国网wiki
跳到导航 跳到搜索

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:
re.search(pattern, string, flags=0)

函数参数说明:

参数       	   描述
pattern	 匹配的正则表达式
string	     要匹配的字符串。
flags	     标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。


匹配成功re.search方法返回一个匹配的对象,否则返回None。
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

 匹配对象方法	          描述
group(num=0)	   匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()	      返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

实例 
#!/usr/bin/python
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!!"


以上实例执行结果如下:
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter


re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

group([group1, …]): 
获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。

参考

Python正则表达式

http://www.runoob.com/python/python-reg-expressions.html