Я хочу найти все подстроки «01», которые содержат цифру или более, используя регулярное выражение, т.е. я хочу получить (в любом порядке):
['0', '01', '1']
Проблема в том, что совпадения регулярных выражений обычно не выбирают перекрывающиеся подстроки:
>>> re.findall(r'\d+', '01')
['01']
Умный обходной путь (найденный здесь) включает использование просмотра вперед. Но это все равно неудовлетворительно, так как будет найдено только одно совпадение для каждой позиции в строке:
>>> re.findall(r'(?=(\d+))', '01')
['01', '1']
Единственный способ решить эту проблему, который я могу придумать, - это использовать приведенное выше решение и перебирать каждую возможную длину подстроки:
s = '01'
matches = []
for n in range(1, len(s) + 1):
matches += re.findall(r'(?=(\d{%i}))' % n, s)
Есть ли лучший встроенный способ сделать это напрямую с помощью регулярного выражения? Или, может быть, регулярное выражение не подходит для этого?
Спасибо!
(?=((\d)(\d)))
regex101.com/r/sgmH6t/1 - person The fourth bird   schedule 06.12.2019