He visto muchos ejemplos de cómo hacer que una expresión regular completa no distinga entre mayúsculas y minúsculas. Lo que me pregunto es que solo una parte de la expresión no distinga entre mayúsculas y minúsculas.
Por ejemplo, digamos que tengo una cadena como esta:
fooFOOfOoFoOBARBARbarbarbAr
¿Qué sucede si quiero hacer coincidir todas las apariciones de "foo" independientemente de las mayúsculas y minúsculas, pero solo quiero hacer coincidir las "BAR" en mayúsculas?
La solución ideal sería algo que funcione en todos los sabores de expresiones regulares, pero también estoy interesado en escuchar los específicos del idioma (Gracias Espo )
Editar
El enlace proporcionado por Espo fue muy útil. Hay un buen ejemplo sobre cómo activar y desactivar modificadores dentro de la expresión.
Para mi ejemplo artificial, puedo hacer algo como esto:
(?i)foo*(?-i)|BAR
lo que hace que la coincidencia no distinga entre mayúsculas y minúsculas solo para la parte foo de la coincidencia.
Eso parecía funcionar en la mayoría de las implementaciones de expresiones regulares, excepto Javascript, Python y algunas otras (como mencionó Espo).
Los grandes sobre los que me preguntaba (Perl, PHP, .NET) admiten cambios de modo en línea.