в вашем regex ^
соответствует началу новой строки (или всего файла) и $
соответствует концу. Поэтому ваше регулярное выражение соответствует всему файлу (из-за .*
в конце), и у вас есть только одно (неперекрывающееся) совпадение.
Вместо этого вы должны искать следующее:
r'(url|URL|Url|uRL|uRl)\s(\s*(.+?\.(png|jpg|gif|jpeg|svg))\s*)'
Изменения
- удаления
^.*
и .*$
в начале и в конце.
.+?
вместо .+
для создания ИНТ, не неоднозначны (соответствие наименьшую строку)
- на поиск актуальной «» должно быть сделано с
\.
или [.]
- Обратите внимание, что
\s*
не является необходимым, и что \s\s*
можно заменить \s+
, если это не вопрос захвата групп.
Также заботиться о том, какие группы вы хотите. Каждый (...)
представляет собой группу, к которой можно получить доступ для групп, не участвующих в захвате, (?:...)
.
Может быть, как это (в зависимости от которой части вы хотите):
r'(?:url|URL|Url|uRL|uRl)\s\s*.+?\.(?:png|jpg|gif|jpeg|svg)'
или
r'(?:url|URL|Url|uRL|uRl)\s\s*(.+?)\.(?:png|jpg|gif|jpeg|svg)'
для захвата только часть внутри (в Python эти захватывая-группы доступны с \g<1>
если вы необходимо их обработать).