gpt4 book ai didi

正则表达式 - 如何不匹配两个换行符

转载 作者:行者123 更新时间:2023-12-04 04:37:40 27 4
gpt4 key购买 nike

我有以下文本文件:

#Beginning of the file

aaa
bbbb
ccc

dddd
eee
ffff

ggggg
hhhsasas
dsdsd

#end of file

如何将此文件的一部分从每个部分开头的空行开始与此部分的文本匹配到文本部分的末尾(下一部分之间没有新行)?因此,使用上面的示例,我想获得 3 个匹配项:
#Beginning of the first match    

aaa
bbbb
ccc
#End of first match
#Beginning of the second match

dddd
eee
ffff
#End of second match
#Beginning of the third match

ggggg
hhhsasas
dsdsd
#End of third match

我试过这样的事情:
(\n\n)[^(\n\n)]*

但它不像我想要的那样工作,因为 ^(\n\n) 不被视为组而是单独的符号,因此它匹配第一行的结尾。

最佳答案

使用正向前瞻:

.+?(?=^$)

这需要“点匹配新行”和“^$ 匹配换行符”开关。

您可以在表达式中激活“点匹配新行”...
(?s).+?(?=^$)

...但唉,python 只允许一个模式修饰符,所以你需要在 ^$ 开关中编码。

输入:
aaa
bbbb
ccc

dddd
eee
ffff

ggggg
hhhsasas
dsdsd

结果:
Match 1:    
aaa
bbbb
ccc
0 18
Match 2:
dddd
eee
ffff
18 19
Match 3:
ggggg
hhhsasas
dsdsd
37 26

编辑

这是没有开关的全部。请注意平台独立性的可选回车。最后的空行也是可选的:
(.+\r?\n)+(?=(\r?\n)?)

关于正则表达式 - 如何不匹配两个换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19448555/

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