Python使用re.search后如何获取返回的re.Match匹配对象
首先你给出的示例代码里,就已经拿到了re.Match对象:re.search() 方法匹配成功时的返回值本身就是re.Match实例,匹配失败才会返回None,不需要借助re.compile,用法非常简单。
你代码里赋值的变量x就是你要的re.Match对象,直接调用它的内置方法就能获取匹配相关的所有信息,常用操作示例如下:
import re t = "The rain falls in Spain" x = re.search("^The.*Spain$", t) if x: print("There's a match!") # 以下都是对re.Match对象x的直接操作 print("匹配到的完整字符串:", x.group()) # 等价于x.group(0) print("匹配内容的索引范围:", x.span()) print("匹配内容的起始索引:", x.start()) print("匹配内容的结束索引:", x.end()) else: print("There's no match")
如果你的正则里包含捕获分组,还可以通过group(分组序号)获取对应分组的匹配内容,示例:
t = "The rain falls in Spain" # 正则里用括号捕获Spain这个片段 x = re.search("^The.*(Spain)$", t) if x: print("完整匹配:", x.group(0)) print("第一个分组匹配内容:", x.group(1)) # 输出Spain
至于你提到的re.compile方法,属于正则预编译操作,仅适合同一个正则规则需要多次重复匹配的场景,单次匹配完全不需要使用,直接调用re.search/re.match/re.finditer这些顶层方法就能直接拿到re.Match对象。
内容的提问来源于stack exchange,提问作者egghead jr
相关产品推荐
相关产品推荐

