Вы можете использовать:
s='this is a sample\n text. This symbol | shows what I am talking about.\nThis is \n another | sample'
>>> print re.findall(r'\n([^|\n]*)\|', s);
[' text. This symbol ', ' another ']
Это регулярное выражение захватывает буквального \n
следуют шаблону отрицания, который говорит:
([^|\n]*)
что означает совпадение 0 или более любых символов, которые не труба или символ новой строки. Квадратные скобки используются для их захвата в группе, которая будет напечатана позже в findall
. Он соответствует буквальному |
в конце.
Или еще с помощью lookaheads:
>>> print re.findall(r'(?<=\n)[^|\n]*(?= +\|)', s);
['text. This symbol', 'another']
(?<=\n)
является просмотром назад, что означает, что матч должен предшествовать символ новой строки и пробел
(?= +\|)
является предпросмотр, что означает, что матч должен следовать пробел и труба.
является '\ n' символом символа или символа новой строки? –