2012-04-28 118 views
1

我有這樣的文字:正則表達式重複組

<span id="3"> 

HELLO THERE 
<span id="5"> 
Other stuff 
<span id="6"> 
Other Stuff 
<span id="7"> 
Other sutff 

我需要抓住剛HELLO THERE文本後<span...>元素。所以在上面的例子中,除了id = 3之外的所有跨度。

所以我嘗試(<span.+?>)+抓住所有的跨度。接下來,我嘗試了HELLO THERE.+?(<span.+?>)+,但那只是抓住第一個相關的。所以我的問題是,這裏使用的正確的正則表達式是什麼?

+4

有關於類似問題的[非常好的帖子](http://stackoverflow.com/a/1732454/335858)。 – dasblinkenlight 2012-04-28 03:02:44

回答

0

此正則表達式將捕獲後你好所有標記爲匹配組:

HELLO THERE(?:(?:.*?)(<span[^>]+>))+ 
  • HELLO THERE - 匹配開始
    非捕獲組內:
  • (?:.*?) - 可選匹配任何文本直到找到
  • (<span[^>]+>) - 跨度標籤 - 這個將被捕獲
  • + - 重複前面的2個步驟,直到沒有其他span標籤可以發現

你還需要設置你的匹配選項,點匹配新的生產線。

+1

你測試過這個正則表達式嗎?我想你可能會感到驚訝。 – Ziggy 2013-11-20 15:33:04

+1

它只匹配最後一個跨度(id = 7) – Tsayper 2015-05-19 10:52:09