【发布时间】:2020-08-02 02:25:05
【问题描述】:
所以我有以下文字:
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匹配时,不知何故被从字符串中“带走”,没有进入后续的匹配过程,导致报错。
有没有什么简单的方法可以捕捉这些连续分隔符之间的内容?提前致谢。
【问题讨论】:
-
P.S,
{1}是多余的... -
regex-lookbehind-and-lookahead - 他们不会“消耗”比赛
-
@Sushanth 感谢您的评论。但是
test_str只是一个玩具示例。我真正的问题涉及文本,其中之间的内容实际上可以是任何东西,而不仅仅是数字。