RegexOptions.CultureInvariantを用いると、文字の比較にインバリアントカルチャを用いた比較を行うようにすることができます。

次の例では、正規表現を使って単語がiで始まるかどうかを調べています。 比較の際、インラインオプション(?i:)により、大文字小文字の違いは無視されます。

RegexOptions.CultureInvariantを指定してインバリアントカルチャによる比較を行う
using System;
using System.Globalization;
using System.Text.RegularExpressions;
using System.Threading;

class Sample {
  static void Main()
  {
    var text = "Internet";
    var pattern = @"(?i:i(\w+))";

    // 現在のカルチャを表示
    Console.WriteLine(Thread.CurrentThread.CurrentCulture);

    // RegexOptions.CultureInvariantを指定した場合とそうでない場合で結果を比較
    Console.WriteLine(Regex.IsMatch(text, pattern));
    Console.WriteLine(Regex.IsMatch(text, pattern, RegexOptions.CultureInvariant));
    Console.WriteLine();

    // 現在のカルチャを"tr-TR"に変更
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("tr-TR");

    Console.WriteLine(Thread.CurrentThread.CurrentCulture);

    // RegexOptions.CultureInvariantを指定した場合とそうでない場合で結果を比較
    Console.WriteLine(Regex.IsMatch(text, pattern));
    Console.WriteLine(Regex.IsMatch(text, pattern, RegexOptions.CultureInvariant));
    Console.WriteLine();
  }
}
実行結果
ja-JP
True
True

tr-TR
False
True

この例での入力文字列"Internet"iで始まる単語のため、カルチャがja-JPの場合はRegexOptions.CultureInvariantを指定しているかどうかに関わらず正規表現にマッチします。 しかしカルチャをtr-TR(トルコ語/トルコ)に変更すると、RegexOptions.CultureInvariantを指定しないとマッチしません。

トルコ語においてはiIが大文字小文字の関係ではなく異なる文字として扱われるため、正規表現には一致しなくなります(参考、Internetのトルコ語表記: İnternet)。 この例のように、カルチャによって異なる結果とならないようにするには、RegexOptions.CultureInvariantを指定する必要があります。

カルチャや、カルチャによる動作結果の違いなどについてはカルチャの基本とカルチャ情報で解説しています。

RegexOptions.CultureInvariantの動作に関しては文字列と比較オプション・カルチャの並べ替え規則 §.StringComparison列挙型も合わせて参照してください。