Как получить список подстрок, игнорирующих символ новой строки

1

У меня есть такой текст:

Title
<bp n=3 /> bla bla bla
bla bla bla <bp n=4 /> bla bla bla
<bp n=5 /> bla bla bla
<bp n=6 /> bla bla bla <bp n=7 /> bla bla bla
bla bla bla

И мне нужно получить такой список:

['<bp n=3 /> bla bla bla
bla bla bla','<bp n=4 /> bla bla bla','<bp n=5 /> bla bla bla','<bp n=6 /> bla bla bla ','<bp n=7 /> bla bla bla
bla bla bla']

Я попытался использовать такой код:

re.findall(r'(<bp n=\d+ />.*?)<bp n=\d+ />',text,re.DOTALL)

затем он перепрыгнул через следующий матч

  • 1
    Попробуйте r'<bp n=\d+ />[^<]*' или r'<bp n=\d+ />.*?(?=<bp n=\d+ />|\Z)'
  • 0
    Спасибо, что r '<bp n = \ d + />.*?(?=<bp n = \ d + /> | \ Z)' сработало
Показать ещё 1 комментарий
Теги:
python-3.x

1 ответ

0

<bp n=\d+/> в конце вашего шаблона соответствует части последующего соответствия. Вы можете использовать

re.findall(r'<bp n=\d+ />.*?(?=<bp n=\d+ />|\Z)', text, re.DOTALL)

См. Демо-версию regex.

Здесь (?=<bp n=\d+/>|\Z) соответствует местоположению в строке, за которым сразу следуют цифры <bp n=, 1+, /> или конец строки (\Z),

Ещё вопросы

Сообщество Overcoder
Наверх
Меню