我正在学习正则表达式,但仍然觉得很难学。
所以我的问题是这样的,我给一组关键字:如何匹配正则表达式中由空格分隔的所有单词?
敏捷的棕色狐狸
在那里我有一大堆的句子像找到:
的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