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

检查Java正则表达式中第n次出现的模式,java,regex,Java,Regex,我想使用Java正则表达式检查输入字符串中特定模式的第n次出现。你能建议怎么做吗?好的,你可以做以下几点: (?:[abc].*+){4}([abc]) 这将匹配4次出现的a、b或c,然后是任何非急切匹配的事件,使得任何a、b或c都不会与此匹配,然后是捕获组$1中的a、b或c 只需将[abc]替换为您正在寻找的模式即可。将大括号中的数字替换为n-1。好的,您可以执行以下操作: (?:[abc].*+){4}([abc]) 这将匹配4次出现的a、b或c,然后是任何非急切匹配的事件,使得任何a、

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

好的,你可以做以下几点:

(?:[abc].*+){4}([abc])
这将匹配4次出现的a、b或c,然后是任何非急切匹配的事件,使得任何a、b或c都不会与此匹配,然后是捕获组$1中的a、b或c


只需将[abc]替换为您正在寻找的模式即可。将大括号中的数字替换为n-1。

好的,您可以执行以下操作:

(?:[abc].*+){4}([abc])
这将匹配4次出现的a、b或c,然后是任何非急切匹配的事件,使得任何a、b或c都不会与此匹配,然后是捕获组$1中的a、b或c

只需将[abc]替换为您正在寻找的模式即可。将大括号中的数字替换为n-1。

这应该可以:

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也是MatchResult,所以我可以直接返回它。

这应该可以:

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也是MatchResult,所以我可以直接返回它。

使用Pattern和Matcher。计算匹配项并放弃所有匹配项,直到你达到目标数。他在寻找重复模式,而不是重复字符。你尝试过什么代码?如果你没有独立完成任何工作,我们将不会帮助你。这里没有足够的声誉重新开放,但即使问题不太详细,我相信这个问题不应该被关闭:他特别要求正则表达式。链接重复问题中的许多答案不适用于此问题。在按下关闭按钮之前请三思。使用图案和匹配器。计算匹配项并放弃所有匹配项,直到你达到目标数。他在寻找重复模式,而不是重复字符。你尝试过什么代码?如果你没有独立完成任何工作,我们将不会帮助你。这里没有足够的声誉重新开放,但即使问题不太详细,我相信这个问题不应该被关闭:他特别要求正则表达式。链接重复问题中的许多答案不适用于此问题。在按下关闭按钮之前请三思。