2011-08-26 57 views
2

考慮下面的HTML塊,這將是最好的正則表達式模式創建以下列表:(保持在匹配集的URL鏈接正則表達式退出HTML項目

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

+4

最好的正則表達式是'/(.*)/ m',然後用一個HTML解析器來完成剩下的工作。 –

+1

[你不應該嘗試用正則表達式解析HTML](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – Bohemian

+0

看到RegEx濫用。 ;) – TrueWill

回答

1

忽略這些DOM傢伙。他們不知道他們在說什麼,即使他們這樣做,他們也沒有回答你的問題,這是無禮的。

如果這真的是你正在試圖做的,我相信一切都是帶標籤,剩下的,你可以去除這些特定的標籤在那裏不包含花哨的東西用一個簡單的:

s/<.*?>//g; 

,你就會有對實體轉換像

s/&nbsp;//g 

在任意的HTML,你必須有很多比這當然更加小心,因爲你有<script>標籤和<style>標籤和CDATA段和alt=">"以及所有的爵士樂,但是在你提交的樣本中,這將工作得很好。

不過,您有沒有更好的將HTML轉換爲文本的方法?

+0

tchrist,謝謝你的幫助。同意,一些答案不是。 :) –

-1

不要用正則表達式這種東西(我想你的時候,你需要擰螺栓不使用,而不是扳手錘?),使用特殊的工具,用於此操作類型:HTML DOM解析器(http://simplehtmldom.sourceforge.net/)或類似的東西。

+0

-1這是一個答案? – NullUserException

+0

嗯,我只是指出,如果你試圖用正則表達式分析簡單的東西,那麼它就會成爲每個問題的工具。檢查http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454爲更詳細的答案:) –