正则表达式findall start()和end()?蟒蛇

O.r*_*rka 4 python regex sequence findall

我正在尝试使用re.findall按顺序获取查询的开始和结束位置

import re

sequence = 'aaabbbaaacccdddeeefff'

query = 'aaa'

findall = re.findall(query,sequence)

>>> ['aaa','aaa']
Run Code Online (Sandbox Code Playgroud)

我如何得到像findall.start()或findall.end()的东西?

我想得到

start = [0,6]
end = [2,8]
Run Code Online (Sandbox Code Playgroud)

我知道

search = re.search(query,sequence)

print search.start(),search.end()

>>> 0,2
Run Code Online (Sandbox Code Playgroud)

只会给我第一个例子

Ash*_*ary 14

用途re.finditer:

>>> import re
>>> sequence = 'aaabbbaaacccdddeeefff'
>>> query = 'aaa'
>>> r = re.compile(query)
>>> [[m.start(),m.end()] for m in r.finditer(sequence)]
[[0, 3], [6, 9]]
Run Code Online (Sandbox Code Playgroud)

来自文档:

在字符串中的RE模式的所有非重叠匹配上返回一个iterator让步MatchObject实例.从左到右扫描字符串,并按找到的顺序返回匹配项.

  • 除了 `[m.start(), m.end()]` 你也可以只使用 `m.span()`,它返回开始和结束索引的元组。 (2认同)