簡體   English   中英

python正則表達式匹配跨越多行的內容

[英]python regex match content crossing multiple lines

我有一個 txt 文件,包含多行。我的結果跨越多行。

例如,我的數據可以簡化如下:

target_str =

x:-2.12343234
aaa:-3.05594480202
aaa:-3.01292995004
aaa:-2.383299
456:-2.232342
x:-2.53739230
aaa:-2.96875038099
aaa:-2.92326261448
aaa:-2.87628054847
bbb:-2.82755928961
456:-2.77678240323
x:-2.3433210
aaa:-2.72356707049
aaa:-2.6675072938
aaa:-2.60827106148
456:-2.3323232
x:-2.8743920
aaa:-2.433233
aaa:-2.9747893
aaa:-2.9747893
bbb:-2.43873
456:-2.43434

我要搭配

x:.....
aaa:.....
aaa:.....
aaa:.....
bbb:.....
456:.....

意味着如果存在 bbb,那么我從 x:... 到 456:....

示例數據的預期結果是:

x:-2.53739230
aaa:-2.96875038099
aaa:-2.92326261448
aaa:-2.87628054847
bbb:-2.82755928961
456:-2.77678240323

x:-2.8743920
aaa:-2.433233
aaa:-2.9747893
aaa:-2.9747893
bbb:-2.43873
456:-2.43434

我寫的:

a=re.findall(r"x:(.*\n){4}bbb:.*\n456.*",target_str)

print(a)

但結果是:

['aaa:-2.87628054847\n', 'aaa:-2.9747893\n']

這不正確,有人可以幫助我嗎? 多謝。

嘗試使用以下正則表達式:

(x:(?:.*\n){4}bbb:.*\n456.*)

(?:.*\\n) - ?:使組不被捕獲,所以它不會被設置為輸出。

在整個正則表達式上添加括號使其成為您希望將其視為輸出的組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM