Как найти все, что находится между двумя символами в строке Python?

допустим у меня есть строка:

'строка <, которую 123>надо<разделить>'

И я хочу получить из нее:

', которую 123 разделить'

То есть мне нужно все, что находится между <>. У меня есть код:

import re
regex = re.compile("\<(.*)\>")
regex.findall('строка <, которую 123>надо<разделить>')

Но выводит у меня не то, что нужно:

', которую 123>надо<разделить'

Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Используйте

import re
text = 'строка <, которую 123>надо<разделить>'
print( ' '.join(re.findall(r'<([^<>]+)>', text)) )
# => , которую 123 разделить

См. пример работы кода и регулряного выражения.

Выражение <([^<>]+)> находит

  • < - символ <
  • ([^<>]+) - один и более символов, отличных от < и >, захватываемых в подмаску #1
  • > - символ >.

re.findall возвращает список значений в первой подмаске, а ' '.join(...) объединяет их в одну строку.

→ Ссылка