繁体   English   中英

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

[英]capture data between a repeating string in python

我想提取重复字符串之间的所有数据

文字是这样的

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)

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

任何解决方法?

您应该考虑为此使用split而不是findall 您似乎已经想到了更多:

re.split(r'map report for \d+\n', str)

这可以极大地简化您的情况。

您的正则表达式会消耗匹配项中的map词。 您需要提前:

map=re.findall(r"map report for(.+?)\S*\W*(?=map)",filestring,re.S)

这样,它可以检查您的比赛是否跟在我的map后面,但是不会被消耗

我将使用的正则表达式将是这样的:

(map report for \d+)(.*?)\1

\\1将保留您首先捕获的内容,并在最后尝试再次匹配它,因此与其他方法不同,您可以在两者之间使用map字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM