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!