关于python:查找所有regex匹配的索引?

Find the indexes of all regex matches?

我正在分析字符串,其中可能包含任意数量的带引号的字符串(我正在分析代码,并试图避免ply)。我想知道子字符串是否被引用,并且我有子字符串索引。我最初的想法是使用re查找所有匹配项,然后找出它们所代表的索引范围。

似乎我应该用re来处理像\"[^\"]+\"|'[^']+'这样的regex(我现在避免处理三重引号和这样的字符串)。当我使用findall()时,会得到一个匹配字符串的列表,这有点好,但我需要索引。

我的子字符串可能和c一样简单,我需要弄清楚这个特定的c是否真的被引用了。


这就是你想要的:(来源)

1
re.finditer(pattern, string[, flags])

Return an iterator yielding MatchObject instances over all
non-overlapping matches for the RE pattern in string. The string is
scanned left-to-right, and matches are returned in the order found. Empty
matches are included in the result unless they touch the beginning of
another match.

然后可以从MatchObjects中获取开始和结束位置。

例如

1
[(m.start(0), m.end(0)) for m in re.finditer(pattern, string)]