であるかどうかを確認するには、2つのパラメータを受け入れる関数があります。 パラメータ1:SEARCHTERM、 パラメータ2:商品名文中に一致する単語がC#の正規表現
どのように私は検索語の単語は、商品名に存在するかどうかをチェックしますか、それがミドルや商品名の最後に、最初に発生した問題ではありませんか?
SearchTerm = "cano"、ProductName = "canon"と言いますと、一致する単語で一致する必要があります。一致しない場合はfalseを返します。
であるかどうかを確認するには、2つのパラメータを受け入れる関数があります。 パラメータ1:SEARCHTERM、 パラメータ2:商品名文中に一致する単語がC#の正規表現
どのように私は検索語の単語は、商品名に存在するかどうかをチェックしますか、それがミドルや商品名の最後に、最初に発生した問題ではありませんか?
SearchTerm = "cano"、ProductName = "canon"と言いますと、一致する単語で一致する必要があります。一致しない場合はfalseを返します。
word boundaries\b
のような完全な単語のみを検索したい場合は、検索語の前後に追加してください。
\b
は、ワードからワード以外の文字へ、または非ワードからワード文字への変更に一致するゼロ幅アサーションです。
String term = "Foo";
String[] text = { "This contains Foo bar.", "Foo.", "Foobar", "BarFoo", "foo" };
Regex reg = new Regex(@"\b" + Regex.Escape(term) + @"\b");
foreach (var item in text) {
Match word = reg.Match(item);
if (word.Success) {
Console.WriteLine(item + ": valid");
}
else {
Console.WriteLine(item + ": invalid");
}
}
出力:
これはFooのバーが含まれています。 =>有効
Foo。 =>有効な
foobarに=>無効
BarFoo =>無効
FOO =>無効
単純な文字列検索のための正規表現は必要ありません。
ProductName.Contains(searchTerm);
あなたはそれが別々の単語ではなく、サブ単語だことを指定できるようにしたいので、あなたはregexesを使用する必要があります。
あなたが探している単語は「笑」変数に格納されている場合、あなたの正規表現は、おそらく、このようになります。:基本的に
Regex regex1 = new Regex(lol + @"[^a-Z]"); // include grammar marks to avoid issues like "can." not matching
、あなただけのその言葉を一致させよう、としたいですその後に別の手紙ではない文字があることを確かめてください。そうすれば、別の言葉ではないことが分かります。
を編集してください。代わりにこの美しさを試してください。自分で何かを学んだ。
string sPattern = @"\b" + lol + @"\b";
EDIT2:stemaが最初にそれを得たように見えます。 Here's the page I used, for reference.
しかし、彼は「カノン」はその文のとき文で発見され、「できる」のようなものを避けたいです。 ".Contains"はこれを避けません。 –
私は答えた後、質問が更新されました。 :) – hungryMind