0

いくつかの をテストして除外する必要があるかどうかを確認するために使用しているユーザー定義のRegexes がいくつかあります。string

private readonly IEnumerable<Regex> exclusions = <some user defined source>;

static bool Exclude(string value)
{
    return this.exclusions.Any(regex => regex.IsMatch(value);
}

このように、関数から反復を削除できるように、のセットをexclusions単一の結合に結合する方法はあるのでしょうか。exclusion RegexExclude

static bool Exclude(string value)
{
    return this.exclusion.IsMatch(value);
}

このアプローチは実行可能ですか?潜在的なパフォーマンス上の利点がありますか?それとも反復の負担を Regex プロセッサに押し下げるだけですか?


編集

だから、私は簡単にできる、

var exclusion =
    new Regex(string.Join("|", exclusions.Select(e => e.ToString()));

より洗練されたオプションはありますか?


編集2

私は正規表現を制御できないため、盲目的にそれらを組み合わせることは単純なアプローチであり、パフォーマンスの向上よりもバグが発生する可能性が高いと判断しました。

4

2 に答える 2

1

論理和:

regex1 | regex2 | ...
于 2012-08-15T14:01:24.897 に答える
1

なぜそれをしたいのかわかりません。現在のコードは私には問題ないように見えますが、正規表現を定義するすべての文字列を取得して、それらを次のように 1 つに結合できると思います。

(?:(?:REGEX1)|(?:REGEX2)|(?:REGEX3)|(?:REGEX4))
于 2012-08-15T14:01:30.560 に答える