gpt4 book ai didi

python - 如何在 Python 中再次使用先前匹配的正则表达式?

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:58 24 4
gpt4 key购买 nike

我在Python中使用正则表达式来分析这种文本:

#0
$dumpvars
0!
0"
0#
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 7
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 5
b0000000000000000 $
bxxxxxxxxxxxxxxxx /
bxxxxxxxxxxxxxxxx .
bxxxxxxxxxxxxxxxx )
b0111111111111111 %
bxxxxxxxxxxxxxxxx 1
bxxxxxxxxxxxxxxxx 0
bxxxxxxxxxxxxxxxx *
b10101010101010101010101010101010 &
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ,
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 3
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (
bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx '
$end
#600
1!
b0000000000000000 )
b0111111111111111 *
b10101010101010101010101010101010 +
b0000000000000000 /
b0111111111111111 1
b00000000000000000000000000000000 5
b10101010101010101010101010101010 4
b00000000000000000000000000000000 2
b00000000000000000000000000000000 3
b010101010101010101010101010101010 7
#1200

现在我想提取两个“#(number)”条目之间的所有内容。这将介于 #0 和 #600 之间,也适用于 #600 和 #1200。

我已经为此编写了以下正则表达式:

(?s)(\#\d{1,})(.*?)(\#\d{1,})

它有一个版本,我想在此处匹配文本:https://regex101.com/r/nH65Cw/6

但如您所见,它完全忽略了我需要的每 2 个文本 block 。

如何同时包含排除的文本 block ?

最佳答案

它匹配最后一部分,所以它不能成为下一场比赛的一部分。

您可以使用正数 lookahead (?= 最后一部分:

(?s)(\#\d{1,})(.*?)(?=(\#\d{1,}))

关于python - 如何在 Python 中再次使用先前匹配的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50308129/

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