Форум сайта python.su
Есть текст. Нужно найти последовательность, которая начинается определённым образом а заканчивается либо концом файла либо началом следующей последовательности.
Пример:
Мне нужно найти все что начинается на ‘a’, внутри ‘a’ не содержит и заканчивается либо концом строки либо началом другой последовательности.
a = "xcAbbAccAddAvvvAkk"
re.findall(r"(A[^A]*)(A|\Z)", a)
a ="""
[aaa] bcd [ss] bbb
bbb ccc
[bbb] llkkk
[ccc] kkk [dddd [ddd] ddd]"""
Офлайн
>>> a = "xcAbbAccAddAvvvAkk"
>>> re.findall(r"(A[^A]*)", a)
['Abb', 'Acc', 'Add', 'Avvv', 'Akk']
>>> re.findall(r"(A[^A]*)(?=A|\Z)", a)
['Abb', 'Acc', 'Add', 'Avvv', 'Akk']
>>> a ="""
[aaa] bcd [ss] bbb
bbb ccc
[bbb] llkkk
[ccc] kkk [dddd [ddd] ddd]"""
>>> re.findall(r"(\[.*?)(?=\n|\Z|\[)", a)
['[aaa] bcd ', '[ss] bbb', '[bbb] llkkk', '[ccc] kkk ', '[dddd ', '[ddd] ddd]']
Офлайн
Спасибо!
Вот ключевая фраза в документации, которую я не понял:
(?=…)
Matches if … matches next, but doesn’t consume any of the string.
Офлайн