2013-07-09 41 views
1

我有以下的HTML字符串: <a href="http://www.nndc.bnl.gov/nsr/fastsrch_act2.jsp?aname=F.V.Adamian">F.V.Adamian</a>, <ahref="http://www.nndc.bnl.gov/nsr/fastsrch_act2.jsp?aname=G.G.Akopian">G.G.Akopian</a>使用正則表達式使用HTML字符串中提取文本

我想形成一個單一的純文本字符串與作者的名字,這樣它看起來就像(我可以微調後面的標點符號):

FVAdamian,GGAkopian。

我想在Matlab中使用'regexp'。當我做到以下幾點: regexpi(htmlstring,'">.*</a>','match')

我得到:

">F.V.Adamian</a>, <a href="http://www.nndc.bnl.gov/nsr/fastsrch_act2.jsp?aname=G.G.Akopian">G.G.Akopian</a>,

爲什麼?我試圖讓它連續輸出(因此我沒有使用「一次」操作符)「>」之間的所有字符,這是作者的名字。它對第一個字符很好,但對第二個字符沒有問題。很高興能截斷「>並在稍後使用regexprep(regexpstring,'','')。我看到regexprep(htmlstr, '<.*?>','')工作,做我想做的。但我不明白...

+3

每當我看到'HTML'用'Regex',只有[這個問題](http://stackoverflow.com/q/1732348/1679863)出現在我的腦海裏。 –

+1

有趣......但是,我認爲使用正則表達式解析足夠簡單的html字符串是可能的。此外,Matlab似乎已經實現了一些專門針對html的強大功能。 – Kent

+0

據我所知,在Matlab中解析任意HTML到DOM的唯一正確方法是調用Java類。如果文件是有效的XML,即[XHTML](http://en.wikipedia.org/wiki/XHTML),我認爲['xmlread'](http://www.mathworks.com/help/matlab /ref/xmlread.html)(基於[SAX解析器](http://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html))可以工作。 – horchler

回答

2

.*??告訴.*是懶惰而不是貪婪。默認情況下,.*將嘗試匹配它可以做的最大的事情。當您添加?它,而不是去爲最小的事情它可以

source

+1

謝謝!這有很大幫助。作爲一個貪婪操作符的問號正在讓我心動! – Kent

相關問題