簡體   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