Я видел множество примеров создания целого регулярного выражения без учета регистра. Мне интересно, что только часть выражения нечувствительна к регистру.
Например, допустим, у меня есть строка вроде этого:
fooFOOfOoFoOBARBARbarbarbAr
Что делать, если я хочу сопоставить все вхождения "foo" независимо от случая, но я хочу только совместить верхний регистр "BAR"?
Идеальное решение было бы тем, что работает с ароматами регулярных выражений, но я также заинтересован в том, чтобы слышать специфические для языка (спасибо Espo)
Edit
Ссылка Espo была очень полезной. Здесь есть хороший пример о включении и выключении модификаторов внутри выражения.
В моем надуманном примере я могу сделать что-то вроде этого:
(?i)foo*(?-i)|BAR
что делает совпадение нечувствительным к регистру только для части соответствия foo.
Казалось, что это работает в большинстве реализаций регулярных выражений, кроме Javascript, Python и некоторых других (как упоминал Эспо).
Большие, о которых мне было интересно (Perl, PHP,.NET), поддерживают встроенные изменения режима.