用于HTML的正则表达式C#

用于HTML的正则表达式C#,c#,html,regex,C#,Html,Regex,我有以下正则表达式: ^(<span style=.*?font-weight:bold.*?>.*?</span>) ^(.*) 它与以下代码匹配: <span style="font-family:Arial; font-size:10pt"> r.</span></p><p style="margin:0pt"><span style="font-family:Arial; font-size:10pt; f

我有以下正则表达式:

^(<span style=.*?font-weight:bold.*?>.*?</span>)
^(.*)
它与以下代码匹配:

<span style="font-family:Arial; font-size:10pt"> r.</span></p><p style="margin:0pt"><span style="font-family:Arial; font-size:10pt; font-weight:bold">&#xa0;</span>
r.

&xa0;

但我只想匹配这一部分(最后一个包含字体大小的跨距:粗体)

和#xa0;

删除^,因为它表示行的开头。因此,它将始终获得第一个跨度。更重要的是,因为。*表示(任何字符)

这样做,第一场比赛可能仍然是你现在的输出,但第二场比赛应该是你所追求的


此外,诸如regexbuddy之类的工具对于测试Regex很有用。

删除^,因为它意味着行的开始。因此,它将始终获得第一个跨度。更重要的是,因为。*表示(任何字符)

这样做,第一场比赛可能仍然是你现在的输出,但第二场比赛应该是你所追求的

此外,像regexbuddy这样的工具对于测试Regex很有用。

用于解析html:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlContent);

var boldSpans = from s in doc.DocumentNode.SelectNodes("//span")
                let style = s.Attributes["style"].Value
                where style.Contains("font-weight:bold")
                select s;
或者更好的xpath,它选择一行中的所有节点:

doc.DocumentNode.SelectNodes("//span[contains(@style, 'font-weight:bold')]")
用于解析html:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlContent);

var boldSpans = from s in doc.DocumentNode.SelectNodes("//span")
                let style = s.Attributes["style"].Value
                where style.Contains("font-weight:bold")
                select s;
或者更好的xpath,它选择一行中的所有节点:

doc.DocumentNode.SelectNodes("//span[contains(@style, 'font-weight:bold')]")

不要使用
^
,因为该行不是以要匹配的跨度开始的

<span style=["'][^'"]*font-weight:bold[^'"]*['"]>[^<]*</span>

不要使用
^
,因为行的开头不是要匹配的跨度

<span style=["'][^'"]*font-weight:bold[^'"]*['"]>[^<]*</span>

不要尝试用正则表达式解析HTML。去拿枪,伙计们!Kamil没有问使用正则表达式解析HTML是否是个好主意。他问了一个很好且具体的问题,关于如何让他的正则表达式匹配所提供字符串的不同部分。他的字符串恰好看起来像HTML,这一事实与这个问题完全无关。不需要HTML Regex膝反射…@Mels-不,Kamil即将向自己的脚和身体其他部位开枪。我们不能因为不采取行动而让人受到伤害。@Mels他的字符串恰巧看起来像HTML,这一事实是完全相关的,因为它揭示了这里发生的典型XY问题。OP正在询问如何使他的“解决方案”起作用,而他显然在工作中使用了错误的工具。当他一小时后带着另一个关于匹配其他东西的问题回来时,这只会增加污染。不要试图用正则表达式解析HTML。去拿枪,伙计们!Kamil没有问使用正则表达式解析HTML是否是个好主意。他问了一个很好且具体的问题,关于如何让他的正则表达式匹配所提供字符串的不同部分。他的字符串恰好看起来像HTML,这一事实与这个问题完全无关。不需要HTML Regex膝反射…@Mels-不,Kamil即将向自己的脚和身体其他部位开枪。我们不能因为不采取行动而让人受到伤害。@Mels他的字符串恰巧看起来像HTML,这一事实是完全相关的,因为它揭示了这里发生的典型XY问题。OP正在询问如何使他的“解决方案”起作用,而他显然在工作中使用了错误的工具。一个小时后,当他带着另一个关于匹配其他东西的问题回来时,这只会增加污染。事实上,我更喜欢第一个——在我看来,它更容易阅读。@dav_I这就是为什么我放弃了这两个选项:)谢谢!!我有由外部库生成的HTML,所以我假设HTML的结构(创建方式)是constans。不管怎样,HTML Agility Pack是更好的选择:)我实际上更喜欢第一个——在我看来它更容易阅读。@dav_I这就是为什么我放弃了这两个选项:)谢谢!!我有由外部库生成的HTML,所以我假设HTML的结构(创建方式)是constans。无论如何,HTML敏捷包是更好的选择:)