2014-08-30 27 views
4

我需要提取只以下的第一場比賽:Java的正則表達式來提取n組

輸入(請忽略任何可能把它當作XML,使用XPath,等等 - 這只是一個例子):

<city>NYC - New York </city><city>PAR - Paris</city><city>NYC - New York </city><city>MIA - Miami</city> 

正則表達式:

(?si).*?(?:NYC\s-\s)([^<]*) 

正如你所看到的,我已經使它懶,但是這兩個紐約被抓獲。如果我讓它變得貪婪,只有最後一個被捕獲。 我需要通過正則表達式(而不是通過find方法)來限制只捕獲第一個(實際上,最好的方法是控制我想要的那個,比如第八個)。恐怕會使正則表達式非常混亂。 有什麼幫助嗎? 謝謝!

回答

1

您可以使用以下正則表達式:

(?si)(?:(?:NYC\s-\s)([^<]*).*?){n} 

哪裏n是你想捕捉髮生的序號。

Live demo

+0

謝謝,但此正則表達式是造成查找()是有效的兩次當n = 1。對於n = 2,沒關係(只有一個發現)。 – igorjrr 2014-08-30 18:58:51