【发布时间】:2017-10-09 19:37:27
【问题描述】:
我需要使用 CLASS CLASSIFY 获取所有 SPAN 标签。在一种情况下,我正在使用的 RegEx 正在跳过第一个 SPAN 标记。
正则表达式
<span [^>]*class=\"classify\"(.*?)</span>
C# 代码
Regex.Matches(content, "<span [^>]*class=\"classify\"(.*?)</span>", RegexOptions.Multiline)
内容:
<span categoryid="110" categorytext="(Sup ed (Inl))" class="classify" classifyid="3395349" quoteid="" quotetext="" selectedclassify="true" style="font-weight: bold; background-color: #ffa500">
<u>Objective/reason for interaction</u>
<br /> wtwt
<br />
<br /> <u>Summary</u><br /> As -16/08/15</span>
<br />
<br />
<u>Actions</u>
<br /> N
<br />
<br />
<u>Outcomes/reportables</u>
<br />
<span categorytext="(Nofrf of J Ced)" class="classify" quoteid="" quotetext="" selectedclassify="false" style="categoryid="13416"">1 full </span>
<br /> A Mag
<br />
<br />
<u>K</u>
<br /> As ab
<br />
.Net RegEx 测试器的链接:
请指教,我在 RegEx 中缺少什么。
【问题讨论】:
-
HTML 不是常规语言。您不能使用常规语言解析器(即 RegEx)来解析它。您需要使用专门设计的东西,例如HTML Agility Pack。
-
解析器已经到位,所以我现在无法更改整个代码以使用 HTML Agility Pack。
-
好吧,我建议您进行一些与此代码相关的良好单元测试,并且您可以控制正在解析的 HTML。