C# 使用多个时,要匹配css类名的正则表达式

C# 使用多个时,要匹配css类名的正则表达式,c#,regex,C#,Regex,我试图创建一个正则表达式来查找任何具有特定类的元素 比如说 <span class = "float"> 当然,您可以声明多个CSS <span class = "float align cssnames"> 我不知道你会如何使其他一切都可选。也许\s*class\s*=\s*(“|”)[\w\s]*\bfloat\b[\w\s]*(“|”)\s* 在引号之间,它查找两边都有单词边界的float,可能被更多的单词字符和/或空格(即其他CSS类)包围 将匹配“在此处

我试图创建一个正则表达式来查找任何具有特定类的元素

比如说

<span class = "float">
当然,您可以声明多个CSS

<span class = "float align cssnames">


我不知道你会如何使其他一切都可选。

也许
\s*class\s*=\s*(“|”)[\w\s]*\bfloat\b[\w\s]*(“|”)\s*


在引号之间,它查找两边都有单词边界的
float
,可能被更多的单词字符和/或空格(即其他CSS类)包围


将匹配“在此处浮动任何内容,但以结束引号结尾”

此代码将查找class=“and”作为不匹配的锚点。然后,它将获取找到的每个属性值,并将它们放入名为Assignments的命名捕获组中

然后linq将只提取那些命名为capture的项,然后从捕获的组中查找单个“Float”项并返回true或false

string data = @"<span class = ""float align cssnames"">";

string pattern = @"(?:class\s*=\s*\x22)((?<Assignments>[^\s\x22]+)(?:\s?))+(?:\x22)";

var containsFloat =
   Regex.Matches(data, pattern, RegexOptions.Multiline)
      .OfType<Match>()
      .Select(mt => mt.Groups["Assignments"].Captures
                                             .OfType<Capture>()
                                             .Select(c => c.Value))
      .SelectMany(assignments => assignments) // is an IEnumerable<string> = { "float", "align", "cssnames" } at this point
      .Any(assignment => assignment == "float"); // True!
字符串数据=@; 字符串模式=@“(?:类\s*=\s*\x22)((?[^\s\x22]+)(?:\s?)+(?:\x22)”; var包含浮点数= Regex.Matches(数据、模式、RegexOptions.Multiline) 第()类 .选择(mt=>mt.Groups[“Assignments”])。捕获 第()类 .选择(c=>c.Value)) .SelectMany(assignments=>assignments)//此时是IEnumerable={“float”、“align”、“cssnames”} .Any(赋值=>赋值==“浮点”);//真的!
string data = @"<span class = ""float align cssnames"">";

string pattern = @"(?:class\s*=\s*\x22)((?<Assignments>[^\s\x22]+)(?:\s?))+(?:\x22)";

var containsFloat =
   Regex.Matches(data, pattern, RegexOptions.Multiline)
      .OfType<Match>()
      .Select(mt => mt.Groups["Assignments"].Captures
                                             .OfType<Capture>()
                                             .Select(c => c.Value))
      .SelectMany(assignments => assignments) // is an IEnumerable<string> = { "float", "align", "cssnames" } at this point
      .Any(assignment => assignment == "float"); // True!