gpt4 book ai didi

python正则表达式在连续分隔符之间查找内容

转载 作者:行者123 更新时间:2023-12-03 23:45:16 26 4
gpt4 key购买 nike

所以我有以下文字:

a
111
b
222
c
333
d
我想捕获这些字母分隔符之间的所有内容。所以我试过了
import re
test_str=r"""a
111
b
222
c
333
d
"""
res = re.findall(r"[a-z]{1}\n([\d\D]+?)\n[a-z]{1}", test_str)
请注意 [\d\D]适用于任何字符,包括换行符,因为在实际示例中,中间的内容可能很复杂并且包含许多行。无论如何,我的预期输出是
['111', '222', '333']
但相反,实际结果是
['111', '333']
我猜的原因是当第一次出现 a\n111\nb匹配,就以某种方式从字符串中“带走”,不进入后续匹配过程,导致错误。
有没有什么简单的方法可以在这些连续的分隔符之间捕获内容?提前致谢。

最佳答案

您可以改用(正向)前瞻:

r"(?s)[a-z]\n(.+?)(?=[a-z])" 
它不消耗匹配的部分,只是确保有可能匹配。
res = re.findall(r"(?s)[a-z]\n(.+?)(?=[a-z])", test_str) # ['111\n', '222\n', '333\n']
https://regex101.com/r/6FEFkZ/2Python regex lookbehind and lookahead

关于python正则表达式在连续分隔符之间查找内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63205996/

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