Как регулярное выражение Python может игнорировать регистр внутри части шаблона, но не всего выражения? - PullRequest
7 голосов
/ 06 июня 2011

Скажем, у меня есть строка, содержащая foobar fooBAR FOObar FOOBAR, и я хочу найти все экземпляры, содержащие нечувствительный к регистру "foo" или "FOO" , но строчную "bar".В этом случае re.findall должен вернуть ['foobar', 'FOObar'].

Принятый ответ на этот вопрос объясняет, что это можно сделать в C # с (?i)foo(?-i)bar, но Python вызывает неверное выражениеошибка.

Поддерживает ли библиотека регулярных выражений Python такую ​​функцию?

Ответы [ 2 ]

5 голосов
/ 06 июня 2011

Python не поддерживает отключение флагов таким же образом; вам придется обращаться с этим по-другому.

>>> re.match('[Ff][Oo]{2}bar', 'Foobar')
<_sre.SRE_Match object at 0x7eff94dac920>
3 голосов
/ 06 июня 2011

Модуль re не поддерживает флаги с областями видимости, но есть альтернативная реализация регулярного выражения, которая делает:

...