Как найти слова через регулярное выражение используя независимый регистр

Всем привет!
Не могу найти, как мне использовать поиск слов через регулярное выражение вкл нижний регистр, чтобы мне не писать копировать в регулярке kontakty и Kontakty.
Заранее всем благодарен!

import re
re.findall(r'(contact|kontakt|контакты|kontakty|feedback)', 'http://www.web.ru/Kontakty/')


Ответы (2 шт):

Автор решения: Den

добавил (?i)

import re
result = re.findall('(?i)(contact|kontakt|контакты|feedback)', 'http://www.uralstil.ru/Kontakty/')
→ Ссылка
Автор решения: Wiktor Stribiżew

Для регистронезависимого поиска с помощью регулярных выражений re используется флаг re.I / re.IGNORECASE (аналогичный аргумент есть и в библиотеке PyPi regex, regex.I/regex.IGNORECASE):

re.I — делает поиск нечувствительным к регистру

Примеры использования в разных функциях re:

re.compile(r'\bстрока\b', re.I) # компилирует регистронезависимое регулярное выражение для поиска слов "строка"
re.findall(r'\bстрока\b', text, re.I) # ищет все вхождения целого слова "строка" в тексте независимо от регистра
re.match(r'\bстрока\b', text, re.I)   # ищет вхождение целого слова "строка" в начале текста независимо от регистра 
re.search(r'\bстрока\b', text, re.I)  # ищет вхождение целого слова "строка" где угодно в тексте независимо от регистра 
re.sub(r'\bстрока\b', r'<b>\g<0></b>', text, flags=re.I) # заключает все вхождения целого слова "строка" независимо от регистра в тег <b> (именной аргумент flags тут очень важен!)

Сделать целое выражение регистронезависимым можно добавив (?i) в начале регулярного выражения, т.е. (?i)<РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ>:

(?imx) — временно включает параметры i, m или x в регулярное выражение. Если используются круглые скобки — затрагивается только эта область.
(?-imx) — временно отключает опции i, m или x в регулярном выражении. Если используются круглые скобки — затрагивается только эта область.

Пример:

(?i)(мама|папа)

См. пример работы регулярного выражения.

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

(?imx: re) — Временно включает параметры i, m или x в круглых скобках.
(?-imx: re) — временно отключает опции i, m или x в круглых скобках.

Пример:

Пропала\s+(?i:собака|кошка)

См. пример работы регулярного выражения (к сожалению, при тестировании на regex101 этот конструкт не работает, поэтому я выбрал опцию .NET, в коде всё работает).

→ Ссылка