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

Check for nth occurrence of pattern in regular expression in Java

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

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


这应该可以工作:

MatchResult findNthOccurance(int n, Pattern p, CharSequence src){

  Matcher m = p.matcher(src);

  for(int i = 0; i<n; i++) m.find();

  return m;

}

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

基本上,它只是在从Pattern 获得的Matcher 上重复调用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;

}

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

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

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


相关推荐

  • Spring部署设置openshift

    Springdeploymentsettingsopenshift我有一个问题让我抓狂了三天。我根据OpenShift帐户上的教程部署了spring-eap6-quickstart代码。我已配置调试选项,并且已将Eclipse工作区与OpehShift服务器同步-服务器上的一切工作正常,但在Eclipse中出现无法消除的错误。我有这个错误:cvc-complex-type.2.4.a:Invali…
    2024-04-261
0.059346s