Java 模式匹配获取字符的最后索引
下面的将给我介于uu和之间的时间。例如Pet_you.txt 会给我你吗 但是如果我得到pet_te_you.txt会得到te_you,但我需要你的结果。如何修正我的模式以采取最后的措施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
你只需要在捕获模式中避免
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