检查Java中正则表达式中第n次出现的模式

时间:2013-11-21 20:42:50

标签: java regex

我想使用Java正则表达式检查输入字符串中第n个特定模式的出现。你能建议怎么做吗?

2 个答案:

答案 0 :(得分:2)

嗯,你可以做到以下几点:

(?:[abc].*+){4}([abc])

这将匹配a,b或c后跟任何事物的4次出现(非急切匹配,使得任何a,b或c都不会与此任何东西匹配),然后是捕获组中的ab或c( $ 1)。

只需用您要查找的图案替换[abc]即可。将花括号中的数字替换为n - 1。

答案 1 :(得分:2)

这应该有效:

MatchResult findNthOccurance(int n, Pattern p, CharSequence src){
    Matcher m = p.matcher(src);
    for(int i = 0; i<n; i++) m.find();
    return m;
}

基本上,它只是在从find获得的Matcher上反复调用Pattern。方便的是,Matcher也是MatchResult,所以我可以直接将它返回。