我正在學習正則表達式,但仍然覺得很難學。
所以我的問題是這樣的,我給一組關鍵字:如何匹配正則表達式中由空格分隔的所有單詞?
敏捷的棕色狐狸
在那裏我有一大堆的句子像找到:
的Brown SexyFox在後院快速跳躍......
如果有與這些詞相匹配的詞(不區分大小寫):
的,將,褐色,棕色,狐狸,狐狸,快,快
那麼我可以說,返回值是true
如何做到這一點的正則表達式?我正在考慮拆分單詞並放入Array並使用循環並使用.Contains(...)
找到它們,但我知道這並不理想。
其實我還有一個擔心。但我害怕將它作爲一個新問題發佈。
所以我的第二個問題是,如何正則表達式讀取模式?優先事項和最不重要的是什麼?
無論如何,請幫我解決我的問題。
編輯
很抱歉的響應晚,但@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
可能是我做錯了什麼的代碼。請幫忙。
EDIT 2
我忘了@
跡象。這必須現在工作:
string regexPattern = @"(?<=\b)(";
.
.
.
regexPattern += @")(?=\b)";
下面的答案是正確的。
你有什麼試過?你是否開始使用正則表達式模式?你需要使用正則表達式嗎?正則表達式從左到右閱讀。您可以根據需要將字符設置爲可選或必需。 – CSharpDev