捕获python中重复字符串之间的数据

时间:2013-10-16 12:18:41

标签: python regex string

我想在重复字符串

之间提取所有数据

文字就像这样

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)

这只返回搜索字符串后带偶数的行(我假设奇数部分包含在前面的偶数迭代中)

任何解决方法?

3 个答案:

答案 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字符串。