python 正则表达式提取匹配对象
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,反正我也不是很懂,请问有没有其他的方法呢?我认为最简单的方法通常是最好的。
假设您要在较大的字符串中查找短语“The rain falls in Spain”:
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
(即匹配项)的输入字符串中的 start/end 索引。与上面类似,您可以使用 x.span()
作为快捷方式来获取第一个匹配项的跨度。
之前有人问过这个问题,但我想重新提出这个问题,以提供另一个(可能更简单、更切题)不同的例子。
考虑以下 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,反正我也不是很懂,请问有没有其他的方法呢?我认为最简单的方法通常是最好的。
假设您要在较大的字符串中查找短语“The rain falls in Spain”:
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
(即匹配项)的输入字符串中的 start/end 索引。与上面类似,您可以使用x.span()
作为快捷方式来获取第一个匹配项的跨度。