Как извлечь подстроки по определённому разделителю с помощью регулярных выражений?

Есть строка, например 'POLSTOPLFKSTOPKOIUNSTOPSTOP1STOP'.

С помощью регулярных выражений (модуль re в Python) нужно извлечь из этой строки следующие подстроки: POL, LFK, KOIUN, 1, т.е. обозначить границы слова другим словом - STOP.

Я попробовал это сделать с помощью:

res = [_ for _ in re.findall(r'[^STOP]+', line)]

Но результат неверный.


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

Автор решения: GrAnd

Вам поможет re.split() или даже просто split(), если строка-разделитель простая.

>>> import re

>>> line = 'POLSTOPLFKSTOPKOIUNSTOPSTOP1STOP'

>>> re.split('STOP', line)
['POL', 'LFK', 'KOIUN', '', '1', '']

>>> line.split('STOP')
['POL', 'LFK', 'KOIUN', '', '1', '']

Затем пустые элементы отфильтровать любым удобным вам способом.

→ Ссылка
Автор решения: Jack_oS
my_str = 'POLSTOPLFKSTOPKOIUNSTOPSTOP1STOP'

Просто разбейте строку по 'STOP' и выберите непустые подстроки:

my_list = [w for w in my_str.split('STOP') if w]

в my_list будет:

>>> my_list
['POL', 'LFK', 'KOIUN', '1']
→ Ссылка