正则表达式提取HTML项目

时间:2011-08-26 21:10:55

标签: regex

鉴于以下HTML块,创建以下列表的最佳Regex模式是什么:(保留Matches集合中的url链接。

Abdominal Aortic Aneurysm see Aortic Aneurysm
Abdominal Pain
Abdominal Pregnancy see Ectopic Pregnancy
Abnormalities see Birth Defects
ABO Blood Groups see Blood and Blood Disorders

Abortion
About Your Medicines see Medicines; Over-the-Counter Medicines
ABPA see Aspergillosis
Abscess
Abuse see Child Abuse; Domestic Violence; Elder Abuse 

这是原始输入:

<li><span class="formod5">&nbsp;</span></li>
<li class="item">Abdominal Aortic Aneurysm see <a href="http://www.nlm.nih.gov/medlineplus/aorticaneurysm.html">Aortic Aneurysm</a></li>
<li class="item"><a href="http://www.nlm.nih.gov/medlineplus/abdominalpain.html">Abdominal Pain</a></li>
<li class="item">Abdominal Pregnancy see <a href="http://www.nlm.nih.gov/medlineplus/ectopicpregnancy.html">Ectopic Pregnancy</a></li>
<li class="item">Abnormalities see <a href="http://www.nlm.nih.gov/medlineplus/birthdefects.html">Birth Defects</a></li>
<li class="item">ABO Blood Groups see <a href="http://www.nlm.nih.gov/medlineplus/bloodandblooddisorders.html">Blood and Blood Disorders</a></li> 
<li><span class="formod5">&nbsp;</span></li>
<li class="item"><a href="http://www.nlm.nih.gov/medlineplus/abortion.html">Abortion</a></li>
<li class="item">About Your Medicines see <a href="http://www.nlm.nih.gov/medlineplus/medicines.html">Medicines</a>; <a href="http://www.nlm.nih.gov/medlineplus/overthecountermedicines.html">Over-the-Counter Medicines</a></li>
<li class="item">ABPA see <a href="http://www.nlm.nih.gov/medlineplus/aspergillosis.html">Aspergillosis</a></li>
<li class="item"><a href="http://www.nlm.nih.gov/medlineplus/abscess.html">Abscess</a></li>
<li class="item">Abuse see <a href="http://www.nlm.nih.gov/medlineplus/childabuse.html">Child Abuse</a>; <a href="http://www.nlm.nih.gov/medlineplus/domesticviolence.html">Domestic Violence</a>; <a href="http://www.nlm.nih.gov/medlineplus/elderabuse.html">Elder Abuse</a></li> 
<li><span class="formod5">&nbsp;</span></li>

TIA

2 个答案:

答案 0 :(得分:1)

忽略这些DOM家伙。他们不知道他们在谈论什么,即使他们这样做,他们也没有回答你的问题,这是粗鲁的。

如果那真的是你想要做的事情,我相信它是条形标签而剩下的那些,你可以在那里剥离那些不含有花哨东西的特殊标签:

s/<.*?>//g;

你必须转换像

这样的实体
s/&nbsp;//g

在任意HTML上,您必须比这更加谨慎,因为您拥有<script>代码和<style>代码以及CDATA部分和alt=">"以及所有爵士乐,但是根据您提供的样本,这将很好。

你有没有比这更好的方法将HTML转换为文本?

答案 1 :(得分:-1)

不要将正则表达式用于这种东西(我认为当你需要拧螺栓时你不使用锤子而不是扳手?),使用专门用于此类操作的工具:HTML DOM解析器(http://simplehtmldom.sourceforge.net/)或类似的东西。