Итак, у меня есть следующий текст:
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
совпадает, это каким-то образом "забирается" из строки и не входит в последующий процесс сопоставления, что приводит к ошибке.
Есть ли какой-нибудь простой способ захватить содержимое между такими последовательными разделителями? Заранее спасибо.