我正在解析字符串,这些字符串中可能包含任意数量的带引号的字符串(我正在解析代码,并试图避免使用PLY)。我想找出一个子字符串是否带引号,并得到子字符串的索引。我最初的想法是使用re来查找所有匹配项,然后找出它们所代表的索引范围。
看起来我应该在\"[^\"]+\"|'[^']+'
这样的正则表达式中使用re(我现在避免处理三重引号之类的字符串)。当我使用findall()时,我得到了一个匹配字符串的列表,这有点不错,但我需要索引。
我的子字符串可能像c
一样简单,我需要弄清楚这个特定的c
是否真的被引用了。
3条答案
按热度按时间yh2wf1be1#
这就是你想要的:(来源)
返回一个迭代器,该迭代器在字符串中RE模式的所有非重叠匹配项上生成MatchObject示例。从左到右扫描字符串,并按找到的顺序返回匹配项。结果中包括空匹配项,除非它们接触到另一个匹配项的开头。
然后,您可以从MatchObjects取得开始和结束位置。
例如:
u0njafvf2#
要获取所有示例的索引:
j5fpnvbx3#
这应该可以解决您的问题:
然后使用以下命令获取所有重叠索引: