search()和match()都是Python中的正则表达式函数,它们的作用都是在一个字符串中搜索匹配正则表达式的位置,但它们有着不同的使用场景和返回结果。
一、search()函数
search()函数在整个指定字符串中查找正则表达式的第一次出现。如果匹配成功,则返回一个匹配的对象;否则返回None。
搜索成功返回的match对象可以用group()方法获取匹配的字符串。
import re # 在字符串中查找首次匹配的数字 str1 = "hello123world456" result1 = re.search(r'd+', str1) # 查找成功,返回match对象 if result1: print("search found:", result1.group()) else: print("search not found")
在上面的代码中,我们使用re.search()方法在字符串str1中查找第一次匹配的数字。由于str1中有数字123,所以查找成功,返回一个match对象,调用group()方法可以获取匹配的字符串。
二、match()函数
match()函数则是从字符串的头部开始匹配正则表达式。如果匹配成功,返回一个匹配的对象;否则返回None。
同样,搜索成功返回的match对象可以用group()方法获取匹配的字符串。
import re # 在字符串头部查找数字 str2 = "123world456hello" result2 = re.match(r'd+', str2) # 查找成功,返回match对象 if result2: print("match found:", result2.group()) else: print("match not found")
在上面的代码中,我们使用re.match()方法在字符串str2中匹配头部的数字。由于str2的头部是数字123,所以匹配成功,返回一个match对象,调用group()方法可以获取匹配的字符串。
三、区别
可以看出,search()函数是在字符串中查找第一次匹配的位置,而match()函数是从头部开始匹配,只有在字符串头部匹配成功才返回一个匹配的对象。
所以,search()和match()的使用场景是不同的。如果只关心字符串头部的匹配,使用match()函数更好;如果需要查找整个字符串中的匹配,那么使用search()函数更适合。