gpt4 book ai didi

python正则表达式匹配跨多行的内容

转载 作者:行者123 更新时间:2023-12-01 09:04:26 25 4
gpt4 key购买 nike

我有一个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) - ?: 使组不捕获,因此不会将其设置为输出。

在整个正则表达式上添加括号使其成为您希望将其视为输出的组

关于python正则表达式匹配跨多行的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52184652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com