我想使用Java正则表达式检查输入字符串中第n个特定模式的出现。你能建议怎么做吗?
答案 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
,所以我可以直接将它返回。