我有一个看起来像这样的字符串
string myString = "Master Language=\"C#\" MasterPageFile=\"~/masterpages/Libraries.master\"";
- 我需要验证它包含的单词 Master 和 Language="C#"
- 我不能总是保证 Master 和 Language 这两个词会像这样放置,因此 Contains("Master Language") 这样的东西不会做
我一直在尝试 regex.IsMatch
有一段时间没有任何结果,所以如果有人能帮助我,我将不胜感激!
最佳答案
由于您需要以任意顺序查找单词的出现次数,因此可以使用以下模式:
string pattern = @"^(?=.*\bMaster\b)(?=.*Language=""C#"").+$";
这使用正环视来检查 Master
和 Language="C#"
是否存在。请注意单词边界元字符 \b
的使用,它确保“Master”是完全匹配的。这确保不会出现“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));
}
关于c# - 验证一个字符串是否包含一些确切的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10400844/