いくつかのオプションは正規表現要素としてインラインで指定することもできます。 例えばRegexOptions.IgnoreCaseは、インラインオプションとして(?i:regex)
と記述できます。 RegexOptionsでの指定では、メソッド呼び出し時に正規表現全体に対してオプションを適用することになりますが、インラインオプションでは正規表現の全体だけでなく一部分のみにオプションを適用することもできます。
次の例では、正規表現を使って拡張子が.txt
かどうかを調べています。 大文字小文字の違いを無視するためにインラインオプションを指定しています。 比較のためにRegexOptionsを指定しる方法も記述しています。
インラインオプションを使ってRegexOptions.IgnoreCaseに相当するオプションを指定する
using System;
using System.Text.RegularExpressions;
class Sample {
static void Main()
{
// 拡張子が.txtかどうか調べる (大文字小文字の違いを意識する)
Console.WriteLine(Regex.IsMatch("SAMPLE.TXT", @"\.txt$"));
// 拡張子が.txtかどうか調べる (大文字小文字の違いを無視する・インラインオプション)
Console.WriteLine(Regex.IsMatch("SAMPLE.TXT", @"(?i:\.txt$)"));
// 拡張子が.txtかどうか調べる (大文字小文字の違いを無視する・上記と同等のコード)
Console.WriteLine(Regex.IsMatch("SAMPLE.TXT", @"\.txt$", RegexOptions.IgnoreCase));
}
}
実行結果
False True True
インラインオプションは有効化だけでなく無効化に用いることもできます。 例えば(?i:regex)
はRegexOptions.IgnoreCaseを有効にしますが、(?-i:regex)
とすれば無効にすることができます。 このほか、正規表現でのインラインオプションの記述方法などについては.NET Frameworkで使用できる正規表現 §.インラインオプションも参照してください。