Search code examples
pythonregexcase-sensitivecase-insensitive

How can Python regex ignore case inside a part of a pattern but not the entire expression?


Say I have a string containing foobar fooBAR FOObar FOOBAR, and I want to search all instances containing a case insensitive "foo" or "FOO" but a lowercase "bar". In this case, re.findall should return ['foobar', 'FOObar'].

The accepted answer for this question explains that it can be done in C# with (?i)foo(?-i)bar, but Python raises an invalid expression error.

Does the Python regex library support such a feature?


Solution

  • The re module doesn't support scoped flags, but there's an alternative regex implementation which does:

    http://pypi.python.org/pypi/regex