正規表現全体で大文字と小文字を区別しない例をたくさん見てきました。私が疑問に思っているのは、式の一部だけを大文字と小文字を区別しないようにすることです。
たとえば、次のような文字列があるとします。
fooFOOfOoFoOBARBARbarbarbAr
大文字と小文字を区別せずに「foo」のすべての出現に一致させたいが、大文字の「BAR」だけに一致させたい場合はどうなりますか?
理想的な解決策は、正規表現のフレーバー全体で機能するものですが、言語固有のものにも興味があります(Espoに感謝)
編集する
Espoが提供したリンクは非常に役に立ちました。エクスプレッション内でモディファイアをオンまたはオフにすることについての良い例があります。
私の不自然な例では、次のようなことができます。
(?i)foo*(?-i)|BAR
これにより、一致のfoo部分についてのみ大文字と小文字が区別されなくなります。
これは、Javascript、Python、およびその他いくつかの正規表現の実装で機能するようです(Espoによると)。
私が疑問に思っていた大きなもの(Perl、PHP、.NET)はすべて、インラインモードの変更をサポートしています。