私は正規表現を勉強していますが、まだ学ぶのが難しいと感じています。
だから私の問題はこれです、私は一連のキーワードを与えました:
速い茶色のキツネ
次のような文の束で見つけなければならない場所:
茶色のセクシーキツネは裏庭でとても素早くジャンプします...
これらの単語と一致する場合 (大文字と小文字を区別しない):
ザ、ザ、ブラウン、ブラウン、フォックス、フォックス、クイック、クイック
次に、戻り値はtrue
正規表現でそれを行う方法は?単語を分割して配列に入れてループを使用し、それらを使用して見つけることを考えていまし.Contains(...)
たが、それは理想的ではないことはわかっています。
実はもう一つ気になることがあります。しかし、私はそれを新しい質問として投稿することを恐れています。
私の2番目の質問は、正規表現はどのようにパターンを読み取るのですか? 優先順位と最低優先順位は何ですか?
とにかく私の問題を助けてください。
編集
返信が遅くなって申し訳ありませんが、@PatrikWの解決策はうまくいかないようです。
私は静的クラスを持っています:
public static bool ValidateRegex(string value, string regex)
{
value += ""; // Fail safe for null
Regex obj = new Regex(regex, RegexOptions.IgnoreCase);
if (value.Trim() == "")
return false;
else
{
return obj.IsMatch(value);
}
}
正規表現パターンを構築します。
keyword = "maria";
string regexPattern = "(?<=\b)(";
string Or = string.Empty;
foreach (string item in keyword.Split(new char[] { ' ', ',', '.' }, StringSplitOptions.RemoveEmptyEntries).ToList())
{
regexPattern += Or + "(" + item + ")";
Or = "|";
}
regexPattern += ")(?=\b)";
データ情報:
List<Friend> useritems = null;
useritems = ((List<Friend>)SessonHandler.Data.FriendList).Where(i =>
Utility.ValidateRegex(i.LastName, regexPattern) ||
Utility.ValidateRegex(i.FirstName, regexPattern) ||
Utility.ValidateRegex(i.MiddleName, regexPattern)).ToList();
//regexPattern = "(?<=\b)((maria))(?=\b)"
//LastName = "MARIA CALIBRI"
//FirstName = "ALICE"
//MiddleName = null
コードで何か間違ったことをしたのかもしれません。助けてください。
編集2記号
を忘れました。@
これは今すぐ動作するはずです:
string regexPattern = @"(?<=\b)(";
.
.
.
regexPattern += @")(?=\b)";
下の答えは正しいです。