关于正则表达式:使用Python中的re模块查找模式的位置

Finding the position of a pattern using the re module in Python

我研究了re模块提供的一系列方法,但似乎找不到一个提供模式位置的方法。

例如,考虑以下代码:

1
2
3
4
5
6
7
import re

text = '23132102301211213302'

x=re.findall(r'21',text)

print x

输出:

1
['21', '21', '21']

我只得到一个21个的列表作为我的输出,这对我的目的没有用处。我想知道是否有一个类似于芬德尔的方法,它给出了21的位置,而不仅仅是21的位置(即前21个出现在位置4,第二个出现在位置11…)

2313*21*0230121213302>位置:4

23132102301*21*1213302>位置:11

23132102301211*21*3302>位置:14

因此,所需的输出应该是[4,11,14]。有没有一个re方法?


re.finditer()给你的是MatchObjects,除此之外,它还提供了这个职位。

匹配对象m的开头由m.start()给出,如果需要,结尾由m.end()给出。