Java 模式匹配获取字符的最后索引

Java 模式匹配获取字符的最后索引,java,Java,下面的将给我介于uu和之间的时间。例如Pet_you.txt 会给我你吗 但是如果我得到pet_te_you.txt会得到te_you,但我需要你的结果。如何修正我的模式以采取最后的措施 你只需要在捕获模式中避免 Pattern.compile("\\_([^_]+?)\\.") 你只需要在捕获模式中避免 Pattern.compile("\\_([^_]+?)\\.") 使用lastIndexOf的相同实现 String text = "pet_te_you.txt"; System.ou

下面的将给我介于uu和之间的时间。例如Pet_you.txt 会给我你吗

但是如果我得到pet_te_you.txt会得到te_you,但我需要你的结果。如何修正我的模式以采取最后的措施


你只需要在捕获模式中避免

Pattern.compile("\\_([^_]+?)\\.")

你只需要在捕获模式中避免

Pattern.compile("\\_([^_]+?)\\.")

使用lastIndexOf的相同实现

String text = "pet_te_you.txt";
System.out.println(text.substring(text.lastIndexOf("_")+1, text.lastIndexOf(".")));

使用lastIndexOf的相同实现

String text = "pet_te_you.txt";
System.out.println(text.substring(text.lastIndexOf("_")+1, text.lastIndexOf(".")));

作为一种非正则模式,您可以使用子字符串两次—一次用于lastIndexOf_uuf,然后用于lastIndexOf

或者一个有趣的选择,以一种非丑陋的方式将两者结合起来:

s = s.substring(s.lastIndexOf("_") + 1).substring(0, s.substring(s.lastIndexOf("_") + 1).lastIndexOf("."));
或者,我使用lastIndexOf中的StringBuilder反向循环字符串。-1,直到您到达一个非字符或一个

这里有一个例子


*这绝对是丑陋的

作为一个非正则模式,您可以使用子字符串两次-一次用于lastIndexOf,然后用于lastIndexOf

或者一个有趣的选择,以一种非丑陋的方式将两者结合起来:

s = s.substring(s.lastIndexOf("_") + 1).substring(0, s.substring(s.lastIndexOf("_") + 1).lastIndexOf("."));
或者,我使用lastIndexOf中的StringBuilder反向循环字符串。-1,直到您到达一个非字符或一个

这里有一个例子


*这绝对是丑陋的

你可以与环顾四周相匹配:?你可以与环顾四周相匹配:?在某处复制。让我找一下。不是下划线当你可以使用lastIndexOf时为什么要使用模式匹配?@antonyh长度字符不是fix,如果我说的是uu的最后一个索引,那么我将使用you.txt。那么如何删除.txt?.Dupe文件。让我找一下。不是下划线当你可以使用lastIndexOf时为什么要使用模式匹配?@antonyh长度字符不是fix,如果我说的是uu的最后一个索引,那么我将使用you.txt。那么如何删除.txt?。感谢它的错误,但是是否可以使用lastindexof获得结果?感谢它的错误,但是是否可以使用lastindexof获得结果?
String as[] = {"pet_te_you.txt", "Pet_you.txt"};
Pattern p =  Pattern.compile("(?<=_)[^_]+(?=\\.)");
for (String s : as) {
    int beginIndex = s.lastIndexOf("_");
    int endIndex = s.lastIndexOf(".");
    if (beginIndex >= 0 && endIndex >= 0 && beginIndex < endIndex) {
        System.out.println(s.substring(beginIndex + 1, endIndex));
    }

    Matcher m = p.matcher(s);
    if (m.find()) {
        System.out.println(m.group());
    }
}

output:
    you
    you
    you
    you