ワイルドカードは Regex パターン(greedy) または(not-greedy)*と同等であるため、以下を実行する必要があります。".*"".*?"string.Replace()
string pattern = Regex.Escape(inputPattern).Replace("\\*", ".*?");
Regex.Escape(inputPattern)冒頭に注意。正規表現で使用される特殊文字が含まれている可能性があるためinputPattern、それらの文字を適切にエスケープする必要があります。そうしないと、パターンが爆発します。
Regex.IsMatch(input, ".NET"); // may match ".NET", "aNET", "FNET", "7NET" and many more
その結果、ワイルドカード*は にエスケープされ\\*ます。これが、ワイルドカード自体だけでなく、エスケープされたワイルドカードを置き換える理由です。
パターンを使用するには
次のいずれかを実行できます。
Regex.IsMatch(input, pattern);
また
var regex = new Regex(pattern);
regex.IsMatch(input);
貪欲と貪欲でないの違い
違いは、パターンがどれだけ一致しようとするかです。
次の文字列を考えてみましょう: "hello (x+1)(x-1) world". (開き括弧と閉じ括弧、およびその間のものを一致させる必要があり)ます。
Greedy は一致するだけ"(x+1)(x-1)"で、他には何も一致しません。基本的に、検索できる最長の部分文字列に一致します。
Not-Greedy は一致"(x+1)"し、他には"(x-1)"何もありません。言い換えれば、可能な限り短い部分文字列です。