python中re模块中match和search
Python中,re模块中的match和search的区别解析。
- match:从头开始匹配内容,要么第一个就符合要求,否则不符合.
- search:匹配整个字符串,直到找到一个匹配。
一、match:
- re.match(规则,目标,[匹配模式])函数;
- 可以使用group方法获取匹配的数据;
- 可以使用span方法获取匹配数据的下标;
看代码:(匹配不到)
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()) print("match --> matchObj.group() : ", matchObj.span()) else: print ("No match!!")
## No match!!
上述match匹配不成功!!!
看代码 (匹配成功)
import re line = "Cats are smarter than dogs" matchObj = re.match( r'Cats', line, re.M|re.I) if matchObj: print ("match --> matchObj.group() : ", matchObj.group()) print("match --> matchObj.group() : ", matchObj.span()) else: print ("No match!!") # match --> matchObj.group() : Cats # match --> matchObj.group() : (0, 4)
二、search:
- re.search(规则,目标);
- 可以使用group方法获取匹配的数据;
- 可以使用span方法获取匹配数据的下标;
看代码:
import re line = "Cats are smarter than dogs" matchObj2 = re.search( r'dogs', line, re.M|re.I) if matchObj2: print ("search --> matchObj.group() : ", matchObj2.group()) print("search --> matchObj.group() : ", matchObj2.span()) else: print ("No match!!") #search --> matchObj.group() : dogs #search --> matchObj.group() : (22, 26)
可以看出,只要能匹配到就返回,查询整个字符串。