Python - как получить совпадающие текстовые совпадения в регулярных выражениях

Я использую следующее, чтобы получить все совпадения, включая перекрытие в соответствии с рекомендациями для других потоков:

[(m.start(0), m.end(0)) for m in re.findall(t,s,overlapped = True)]

где t это подмножество s. Однако я получаю следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: findall() got an unexpected keyword argument 'overlapped.'

Что я делаю не так / перекрывается устаревшим флагом / как бы вы это сделали? Вся помощь очень ценится.

1 ответ

Как упоминали Каннингем и Клаус, флаг, на который я ссылаюсь, прибывает из другого пакета, который не является ре.

Я нашел решение, не загружая внешний пакет, хотя, используя lookahead:

[(m.start(0), m.end(0)) for m in re.finditer('(?='+t+')',s)]

Когда s = 'GATATATGCATATACTT' и t = 'ATAT', вы получите [(1, 1), (3, 3), (9, 9)]. Мне не нужно возвращать текст в совпадении, только индексы, поэтому не имеет значения, соответствует ли он ['','',''].

Другие вопросы по тегам