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