Я бачив безліч прикладів того, щоб зробити цілком регулярні висловлювання нечутливими. Що мені цікаво - це лише те, що частина виразу є невідчутною до регістру.
Наприклад, скажімо, у мене є такий рядок:
fooFOOfOoFoOBARBARbarbarbAr
Що робити, якщо я хочу відповідати всім випадкам "foo" незалежно від випадку, але я хочу відповідати лише великим регістром "BAR"?
Ідеальним рішенням буде щось, що працює на смаках регулярних виразів, але я також зацікавлений у тому, щоб слухати конкретні мови (спасибі Espo )
Редагувати
Посилання Espo було дуже корисним. Там є хороший приклад про вмикання та вимкнення модифікаторів у виразі.
Для мого надуманого прикладу я можу зробити щось подібне:
(?i)foo*(?-i)|BAR
що робить матч нечутливим лише до нижньої частини матчу.
Це, здається, працює в більшості програм regex, крім Javascript, Python та деяких інших (як згадував Espo).
Великі, про які мені було цікаво (Perl, PHP, .NET), всі підтримують зміни в режимі вбудованого режиму.