我想在重复字符串
之间提取所有数据文字就像这样
map report for 0
...................
..............
lot of data in between
.....
......
map report for 1
我的正则表达式是
map = re.findall(r"map report for(.+?)\S*\W*map", filestring, re.S)
这只返回搜索字符串后带偶数的行(我假设奇数部分包含在前面的偶数迭代中)
任何解决方法?
答案 0 :(得分:3)
您应该考虑使用split
代替findall
。这似乎更符合您的想法:
re.split(r'map report for \d+\n', str)
这样可以大大简化您的工作。
答案 1 :(得分:2)
您的正则表达式使用偶数匹配中的map
字词。你需要前瞻:
map=re.findall(r"map report for(.+?)\S*\W*(?=map)",filestring,re.S)
这样一来,它会检查您的匹配是否跟随我的map
,但不会消耗。
答案 2 :(得分:0)
我会使用的正则表达式是这样的:
(map report for \d+)(.*?)\1
\1
将保留您首先捕获的内容并尝试在最后再次匹配它,因此与其他方法不同,您可以在其间使用map
字符串。