[英]python regex extract match object
之前已经问过这个问题,但我想重新提出这个问题,以提供另一个(也许更简单、更切中要害)具有不同旋转的示例。
考虑以下 python 正则表达式及其结果。
import re
t = "The rain falls in Spain"
x = re.search("^The.*Spain$", t)
if x:
print("There's a match!")
else:
print("There's no match")
print (x)
产生以下结果:
There's a match!
<re.Match object; span=(0, 23), match='The rain falls in Spain'>
我的问题很简单。
如何从结果中获取匹配对象?
大多数其他问题似乎以许多不同的语言解决了这个话题。 python 上好像很少用compile,反正我也不是很懂,所以我想知道是否还有其他方法可以做到? 我认为最简单的方法通常是最好的。
假设您打算在更大的字符串中找到短语“西班牙的雨”:
import re
t = "Hello G'day. The rain falls in Spain. Testing 123."
x = re.search("The.*Spain", t)
if x:
print("There's a match!")
print(f'The match is: {x.group(0)!r}')
print('The span is:', x.span(0))
else:
print("There's no match")
print(x)
输出:
There's a match!
The match is: 'The rain falls in Spain'
The span is: (13, 36)
<re.Match object; span=(13, 36), match='The rain falls in Spain'>
我改变了什么:
^$
,因为我们不想明确检查字符串的开头和结尾。 所需的匹配也可以在字符串中的某个位置。x.group(n)
访问捕获的组号n
。 在上面的例子中,你也可以使用x.group()
作为快捷方式来获取第一个捕获的组(即第一个匹配)x.span(n)
访问捕获组n
(即匹配项)的输入字符串中的开始/结束索引。 与上面类似,您可以使用x.span()
作为获取第一个匹配项的跨度的快捷方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.