java - 在Java中查找第一个匹配项的最后一个索引

标签 java regex find match

假设我有这个字符串

String s ="stackjomvammssastackvmlmvlrstack"

我想找到子字符串“stack”的第一个匹配的最后一个索引,在我的示例中是 (index=)4。

我该怎么做?

这是我到目前为止所做的

    Matcher m = pattern.matcher(s);
    int i=0;
    while (m.find())
    {    
        System.out.println(m.start());
        System.out.println(m.end());
    }

但这会显示最后一场比赛的最后一个索引。

最佳答案

您可以简单地找到单词的位置并添加其长度:

String s = "stackjomvammssastackvmlmvlrstack";
String match = "stack";
int start = s.indexOf(match);
int end = (start + match.length() - 1);
System.out.println(match + " found at index " + start);
System.out.println("Index of last character of first match is " + end);

如果您需要使用正则表达式,您的代码接近解决方案 - 您可以这样做:

String s = "stackjomvammssastackvmlmvlrstack";
String match = "s.*?k";
Matcher m = Pattern.compile(match).matcher(s);
if (m.find()) {
    System.out.println(m.end() - 1);
}

关于java - 在Java中查找第一个匹配项的最后一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294019/

相关文章:

Java "100%"到数字

用于检查数据库中是否存在用户名和密码的java Web应用程序

javascript - 如何在JQuery中显示隐藏使用最接近和查找方法选择的元素?

java - 这个替换代码有什么问题吗?

javascript - 使用 $ 和 ^ 的正则表达式中的变量匹配字符串

python - bash 相当于 Python 的 os.path.normpath?

linux - 按月查找似乎缺少文件

java - 如何将属性文件和 JAR 打包到 EAR 中?

java - 将数据库数据转换为对象

java - 删除数字序列中的反斜杠