这是我的代码:
a = '/afolder_l/location/folder_l/file.jpg'
p= re.compile("/.+/location/.+_([lr])/")
m = p.match(a)
现在, print m.group(1)给l,但我也希望得到该组的位置。 现在,m.span()给出一个包含所有文本的位置的元组。我怎么能得到l的位置?或者' r'既然那是我想要分组的呢?
答案 0 :(得分:5)
您需要引用组号:
>>> import re
>>>
>>> a = '/afolder_l/location/folder_l/file.jpg'
>>> p= re.compile("/.+/location/.+_([lr])/")
>>> m = p.match(a)
>>> m.span()
(0, 29)
>>> m.span(1)
(27, 28)
答案 1 :(得分:1)
您可以将 SRE_Match对象 的 .span() 方法与整数参数作为组号一起使用
一些示例可以使您更加清楚。如果使用3组 () ,则组 0 将是完全匹配的,并带有参数输入因为从1到3的整数将与每个组号的匹配和索引,它们分别是 .group() 和 .span() 方法。希望这会有所帮助!
>>> import re
>>> regex = re.compile(r"(\d{4})\/(\d{2})\/(\d{2})")
>>> text = "2019/12/31"
>>> matched = regex.match(text)
>>> matched
<_sre.SRE_Match object; span=(0, 10), match='2019/12/31'>
>>> matched.groups()
('2019', '12', '31')
>>> matched.span()
(0, 10)
>>> matched.group(0)
'2019/12/31'
>>> matched.span(0)
(0, 10)
>>> matched.group(1)
'2019'
>>> matched.span(1)
(0, 4)
>>> matched.group(2)
'12'
>>> matched.span(2)
(5, 7)
>>> matched.group(3)
'31'
>>> matched.span(3)
(8, 10)