验证字符串是否包含一些确切的单词

时间:2012-05-01 16:28:27

标签: c# regex

我有一个看起来像这样的字符串

string myString = "Master Language=\"C#\" MasterPageFile=\"~/masterpages/Libraries.master\"";
  1. 我需要验证它包含确切的单词Master和Language =“C#”
  2. 我不能总是保证Master和Language这样的词会像这样放置,因此像Contains(“Master Language”)之类的东西不会这样做
  3. 我一直在玩regex.IsMatch而没有任何结果,所以如果有人能够帮助我,我会很感激!

6 个答案:

答案 0 :(得分:3)

由于您需要以任何顺序查找单词的出现次数,您可以使用以下模式:

string pattern = @"^(?=.*\bMaster\b)(?=.*Language=""C#"").+$";

这使用正面环顾来检查是否存在MasterLanguage="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#\"");

简单有效