c# - 验证一个字符串是否包含一些确切的词

标签 c# regex

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

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”是完全匹配的。这确保不会出现“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/

相关文章:

c# - Entity Framework 一直想要删除我的数据库,为什么?

c# - 如何在非托管 C++ 中创建托管对象,同时在 Java 和 C# 之间为 JNA 包装它?

c# - 局部变量清理的异步等待问题

php - 从 PHP 字符串中删除控制字符

regex - 正则表达式 : how to interpret *?

python - 使用 Python 正则表达式从电子邮件中提取一些信息

c# - 创建完成的任务

c# - WPF ObservableCollection 在创建新的 ObservableCollection 时不更新 DataGrid

JavaScript 和正则表达式 : Split and keep delimiter

javascript - 正则表达式适用于 JavaScript,但不适用于 PHP