【问题标题】:Check for nth occurrence of pattern in regular expression in Java [duplicate]检查Java中正则表达式中模式的第n次出现[重复]
【发布时间】:2013-12-06 13:01:24
【问题描述】:

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

【问题讨论】:

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

标签: java regex


【解决方案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;
}

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      相关资源
      最近更新 更多