findPython中所有正则expression式匹配的索引?
我parsing的string可以有任何数量的引用string(我正在parsing代码,并试图避免PLY)。 我想知道是否有一个子string被引用,并且我有子string索引。 我最初的想法是用refind所有的匹配,然后找出它们所代表的索引的范围。
似乎我应该使用正则expression式像\"[^\"]+\"|'[^']+'
(我避免处理三重引用和此类string)当我使用findall ()我得到了匹配string的列表,这是有点不错,但我需要索引。
我的子string可能就像c
一样简单,我需要弄清楚这个特定的c
是否被实际引用。
提前致谢。
这是你想要的:( 源 )
re.finditer(pattern, string[, flags])
返回一个遍历string中RE模式的所有非重叠匹配的MatchObject实例的迭代器。 string从左到右扫描,匹配按find的顺序返回。 空结果包含在结果中,除非他们触及另一场比赛的开始。
然后,您可以从MatchObjects获取开始和结束位置。
例如
[(m.start(0), m.end(0)) for m in re.finditer(pattern, string)]