2013-07-09 126 views
-2

我想把VBA中的正則表達式放在一起,但即使在紅寶石中,我也無法正確理解它。匹配重複模式

字符串:

<thead class="thead"><tr><th>FECHA</th><th>ITLUPVALOR</th><th>ITLUPPLAZO</th><th>ITLUP30DIAS</th><th>ITLUP60DIAS</th><th>ITLUP90DIAS</th><th>ITLUP180DIAS</th><th>ITLUP270DIAS</th><th>ITLUP360DIAS</th><th>ITLUP720DIAS</th><th>ITLUP1080DIAS</th><th>ITLUP1440DIAS</th><th>ITLUP1800DIAS</th></tr></thead> 

我曾嘗試:

/(?:<thead class=\"thead\"><tr>)(<th>[^<]+?<\/th>)+(?:<\/tr><\/thead>)/m 

這裏的想法(http://rubular.com/r/BpbPszctTw)是有9子匹配,而不是一個。

我錯過了什麼?

+0

請[不要使用正則表達式解析HTML](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags),最好使用解析器。 – tessi

+0

首次使用時請確定首字母縮略詞。那是Visual Basic for Applications或虛擬備份設備嗎?另外,Ruby的regexp可能與其中的任何一個不一樣。 – vgoff

+0

請將模式和目標字符串複製到您的問題中。儘管Rubular.com看起來很穩定,但總是會發生鏈接腐爛,如果沒有這些信息,那麼您的問題將毫無價值。現在,您要求我們通過互聯網追蹤您的代碼,以幫助您。 –

回答

1

對不起,但正則表達式重複組將只捕獲組中的最後一場比賽。有關更多信息,請參閱http://www.regular-expressions.info/captureall.html

更新:確實如此,但如果您讓正則表達式匹配爲您重複,就像在其他答案中一樣,您可以根據http://rubular.com/r/BclU13qWYm獲得多個匹配項!換句話說,接受另一個答案,而不是這個答案。 :-)

0

有了這個模式,你可以得到你想要的東西:

/<thead class="thead"><tr>|\G<th>([^<]+)<\/th>/ 

只是刪除第一個結果。