我有一个看起来像这样的字符串
string myString = "Master Language=\"C#\" MasterPageFile=\"~/masterpages/Libraries.master\"";
我一直在玩regex.IsMatch
而没有任何结果,所以如果有人能够帮助我,我会很感激!
答案 0 :(得分:3)
由于您需要以任何顺序查找单词的出现次数,您可以使用以下模式:
string pattern = @"^(?=.*\bMaster\b)(?=.*Language=""C#"").+$";
这使用正面环顾来检查是否存在Master
和Language="C#"
。注意使用单词边界元字符\b
,它确保“主”是完全匹配。这可确保不会出现“MasterPage”中的部分匹配。
示例:
string[] inputs =
{
"Master Language=\"C#\" MasterPageFile=\"~/masterpages/Libraries.master\"", // true
"Language=\"C#\" MasterPageFile=\"~/masterpages/Libraries.master\" Master", // true
"Language=\"C#\" MasterPageFile=\"~/masterpages/Libraries.master\"" // false
};
string pattern = @"^(?=.*\bMaster\b)(?=.*Language=""C#"").+$";
foreach (var input in inputs)
{
Console.WriteLine(Regex.IsMatch(input, pattern));
}
答案 1 :(得分:0)
您可以使用字符串类的Contains()方法。
答案 2 :(得分:0)
您可以使用IndexOf方法LINK找出字符串中是否存在模式。
bool found = myString.IndexOf("Master Language=\"C#\"") != -1;
答案 3 :(得分:0)
string strTestMe = Regex.Replace(myString, ".*(Master Language=\"C#\").*", "$2")
If strTestMe <> ""
DO STUFF
End If
答案 4 :(得分:0)
我意识到这可能不是您正在寻求的答案,但老实说,在这里使用正则表达式似乎有些过分。只需使用string.Contains
,您可以获得更好的整体性能答案 5 :(得分:-2)
这就是我做的事情
bool containMaster = Regex.IsMatch(myString, @"\bMaster\b");
bool containLanguage = Regex.IsMatch(myString, "Language=\"C#\"");
简单有效