关于正则表达式:检查Java中正则表达式中模式的第n次出现 | 珊瑚贝

Check for nth occurrence of pattern in regular expression in Java

本问题已经有最佳答案,请猛点这里访问。


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

  • 使用模式和匹配器。计算匹配并丢弃所有匹配,直到达到目标数量。
  • 他在寻找一个重复的模式,而不是一个重复的角色。
  • 你试过什么代码?如果您没有自己完成任何工作,我们不会帮助您。
  • 这里没有足够的声誉来重新打开,但即使问题不是很详细,我相信这个问题不应该被关闭:他专门要求正则表达式。链接的”重复”问题中的许多答案不适用于此问题。在点击”关闭”按钮之前请三思。


这应该可以工作:

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

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


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

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

这将匹配 4 次出现的 a、b 或 c,然后是任何内容(非急切匹配,因此任何 a、b 或 c 都不会被此任何内容匹配),然后是捕获组中的 ab 或 c( $1).

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


来源:https://www.codenong.com/20131466/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?