検索条件に一致するタイトルを検索しようとしています。 私の例では、バナナ、リンゴの後に来るので一致しませRegexに複数の単語が含まれています
string exampleTitle = "apple orange banana";
string term1 = "app bana";
string term2 = "bana app";
string pattern1 = @term1.Replace(" ", "*.*") + "*"; //output:app*.*bana*
string pattern2 = @term2.Replace(" ", "*.*") + "*"; //output:bana*.*app*
//now test
bool isMatch1 = Regex.IsMatch(exampleTitle , pattern1) // true
//now test
bool isMatch2 = Regex.IsMatch(exampleTitle , pattern2) // false
以下のようなものしたがってpattern2
です。しかし、検索用語の中のすべての単語を順不同で照合するときは、私は真実を知る必要があります。
:
をあなたはこれでバックトラックと前方検索を制限することができますか?用語を分割し、文字列にすべての用語が含まれているかどうかを確認するだけです。パフォーマンス上の懸念から –
また、なぜですか? –
パフォーマンス上の懸念があるため、正規表現は使用しないでください。あなたのパターンでいくつかの "固定"パターンの前に '。*'を使用している場合は、非正規表現のアプローチを考えてください。バックトラックは、このような任意のパターンでの通常のパフォーマンスの犠牲者です。 –