Java RegEx提取第n组

时间:2014-08-30 18:33:45

标签: java regex

我只需要提取以下第一个匹配项:

输入(请忽略将其视为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方法)来限制只捕获第一个(事实上,最好的是控制我想要的那个,比如第8次出现)。 我担心它会使正则表达式变得非常混乱。 有帮助吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

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

其中n是您要捕获的事件的序号。

Live demo