使用Python 2.6.6。
我希望re
模块提供一些模仿str.find()
工作方式的搜索方法,允许你指定一个起始索引,但显然不是......
search()
让我找到第一场比赛...... findall()
将返回单个模式的所有(非重叠!)匹配finditer()
与findall()
类似,但通过迭代器(效率更高)情况就是这样......我是在庞大的数据块中进行数据挖掘。对于部分解析,正则表达式很有效。但是一旦找到某些匹配项,我就需要切换到不同的模式,甚至使用更专业的解析来查找下一步开始搜索的位置。如果re.search
允许我指定起始索引,那将是完美的。但如果没有,我正在看:
finditer()
,但向前跳过,直到我使用re
到达我想要恢复的索引。潜在问题:
我错过了任何明显的选择吗?不确定是否有办法用一个可以提供切片的类来包装一个巨大的字符串...或者是一个切片式的迭代器或“字符串游标”成语?
答案 0 :(得分:4)
使用两遍法。第一遍使用第一个正则表达式来查找“有趣位”并将这些偏移输出到单独的文件中。你没有说你是否能分辨出每个有趣片段的“结束”在哪里,但如果可以的话,你也会包含它。第二遍使用偏移量将文件的各个部分作为独立字符串加载,然后在每个较小的字符串上应用您喜欢的任何辅助正则表达式。