Как получить все подстроки в строке, используя Regex в Python - PullRequest
0 голосов
/ 14 января 2020

У меня есть строка, такая как: "12345"

с использованием регулярного выражения, как получить все его подстроки, которые состоят из одного-трех последовательных символов, для получения вывода, такого как:

'1', '2', '3', '4', '5', '12', '23', '34', '45', '123', '234', '345'

1 Ответ

2 голосов
/ 15 января 2020

Вы можете использовать re.findall с положительным прогнозным шаблоном, который соответствует символу, повторенному несколько раз, который повторяется от 1 до 3:

[match for size in range(1, 4) for match in re.findall('(?=(.{%d}))' % size, s)]

Однако было бы более эффективно использовать составление списка с вложенными предложениями for для перебора всех размеров и начальных индексов:

[s[start:start + size] for size in range(1, 4) for start in range(len(s) - size + 1)]

При заданном s = '12345' оба приведенных выше результата вернутся:

['1', '2', '3', '4', '5', '12', '23', '34', '45', '123', '234', '345']
...