Предположим, у меня есть этот шаблон, который я хочу найти [a][a]
Предположим, что текст, на котором я буду проверять мой шаблон-искателя это: [a][a][a][a][a][a][a][a]
Каков результат этого регулярного выражения?
Моя модель-искатель будет возвращать эти результаты для первой итерации:
[a][a][a][a][a][a][a][a]
[a][a]
Для второй итерации:
[a][a][a][a][a][a][a][a]
[a][a]
другими словами, картина «скачет» на одну позицию вправо.
Я проверил мое регулярное выражение на некоторых регулярных выражений сайтов и то, что я видел, что они пропускают вперед по длине шаблона - визуально будет выглядеть следующим образом:
первой итерации:
[a][a][a][a][a][a][a][a]
[a][a]
Второму итерация:
[a][a][a][a][a][a][a][a]
[a][a]
Кто такой человек? Я или веб-сайты? И почему?
второй является правильным, потому что вы не можете наложились результаты. Если вы хотите совпадающие результаты, вам нужно поместить ваш шаблон в группу захвата внутри окна просмотра. –
Обычно regex findall игнорирует перекрытия, как предлагает @CasimiretHippolyte. Это возможно по соображениям производительности. См. «Re.findall» python. – simonzack
@simonzack: нет, это не по соображениям производительности, это просто способ, которым движется regex engine: после достижения позиции в строке он продолжается слева направо. –