2011-05-03 15 views
7

我正在尋找一種方法來使用regexp爲了從字符串中刪除所有的html標記。
所以,如果我有<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>我想從它得到hello正則表達式爲Matlab標記與Matlab

我知道它可能看起來像嵌套標籤,但它不是真的,因爲我想在這裏做的是刪除兩個<>之間的任何東西。

我正在使用Matlab來做這件事,但正則表達式完全一樣,所以請隨時提供任何幫助。
謝謝。

回答

10

我的解決辦法是:

>> str='<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>'; 
>> regexprep(str, '<.*?>','') 

ans = 

Hello 
+0

太棒了,謝謝! – 2011-05-03 12:43:41

3

它已被廣泛接受,使用正則表達式解析HTML一般是不好的形式。如果你的html比給出的例子複雜得多,那麼你應該使用XML解析器。

在這個着名的SO問題中進一步討論。 RegEx match open tags except XHTML self-contained tags

如果要正確分析的內容,然後下載xml_io_tools和使用

doc = xml_read('test.html') 
doc.b.FONT.CONTENT 

如果你想堅持用正則表達式,然後使用伊利亞的答案,但是從鏈接答案,例如正則表達式的一個,

str = '<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>'; 
rx = '<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>'; 
regexprep(str, rx, '') 
1

既然你提到,你想從上面的HTML中提取的 「hello」(說filename.html)文件,你可以使用MATLAB中的以下內容:

doc = xmlread('filename.html'); 含量= doc.item(0).getTextContent

希望這有助於!