HTML:
<dt>
<a href="#profile-experience" >Past</a>
</dt>
<dd>
<ul class="past">
<li>
President, CEO & Founder <span class="at">at</span> China Connection
</li>
<li>
Professional Speaker and Trainer <span class="at">at</span> Edgemont Enterprises
</li>
<li>
Nurse & Clinic Manager <span class="at">at</span> <span>USAF</span>
</li>
</ul>
</dd>
我希望匹配<li>
节点。
我写了正则表达式:
<dt>.+?Past+?</dt>\s+?<dd>\s+?<ul class=""past"">\s+?(?:<li>\s*?([\W\w]+?)+?\s*?</li>)+\s+?</ul>
实际上它们不起作用。
答案 0 :(得分:2)
不能使用正则表达式解析HTML,就像它只是一大堆文本一样。使用DOM解析器是一种正确的方法。
答案 1 :(得分:2)
Don't使用正则表达式解析HTML ...
答案 2 :(得分:1)
不要使用正则表达式来匹配html文档。最好使用简单的状态机将其解析为DOM树。
我假设您正在尝试获取HTML列表项。因为你没有指定你使用的语言,所以有一些伪代码可以帮助你:
伪码:
while (iterating through the text)
if (<li> matched)
find position to </li>
put the substring between <li> to </li> to a variable
当然有很多第三方库可以做这种事情。根据您的开发环境,您可能已经有一个功能(例如javascript)。
答案 3 :(得分:1)
您使用哪种语言?
如果您使用Python,则应尝试使用lxml:http://lxml.de。使用lxml,您可以搜索标记为 ul 且类为“past”的节点。然后,您可以检索其子项 li ,并获取这些节点的文本。
答案 4 :(得分:0)
如果您尝试从HTML中提取或操作此HTML,则jQuery中的xPath,xsl或CSS选择器可能比正则表达式更容易且更易于维护。您的目标究竟是什么以及您在哪个框架中运作?
答案 5 :(得分:-1)
请学会使用jQuery来做这类事情