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

本文关键字:单词 字符串 是否 包含一 验证 | 更新日期: 2023-09-27 18:32:53

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

string myString = "Master Language='"C#'" MasterPageFile='"~/masterpages/Libraries.master'"";
  1. 我需要验证它是否包含确切的单词 Master 和 Language="C#"
  2. 我不能总是保证Master和Language这两个词会像这样放置,因此像Contains("Master Language")这样的东西是行不通的。

一段时间以来,我一直在玩regex.IsMatch没有任何结果,所以如果有人能帮助我,我将不胜感激!

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

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

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

这使用积极的环顾四周来检查是否存在MasterLanguage="C#"。请注意使用词边界元字符 'b ,这可确保"Master"是完全匹配的。这可确保不会在"母版页"中发生部分匹配。

例:

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));
}

你可以使用 Contains() 方法来处理字符串类。

string strTestMe = Regex.Replace(myString, ".*(Master Language='"C#'").*", "$2")
If strTestMe <> ""
  DO STUFF
End If

我知道这可能不是您要寻求的答案,但老实说,在这里使用正则表达式似乎有点矫枉过正。通过简单地使用字符串,您可以获得更好的整体性能。包含

您可以使用 IndexOf 方法 LINK 找出字符串中是否存在该模式。

bool found = myString.IndexOf("Master Language='"C#'"") != -1;

这就是我所做的

bool containMaster = Regex.IsMatch(myString, @"'bMaster'b");
bool containLanguage = Regex.IsMatch(myString, "Language='"C#'"");

简单有效