我有一个字符串,字符串看起来像:
abc/axs/abc/def/gh/ij/kl/mn/src/main/resources/xx.xml
我想在n
次出现之后和出现m
字符/
之前获取内容。
例如,从上面的字符串,我想:
mn/src/main
请为此提出一些解决方案。
答案 0 :(得分:1)
你需要的正则表达式是:
(?:.*?\/){7}(.*?)(.*)(?:\/.*?){2}$
通用正则表达式:
(?:.*?\/){n}(.*?)(.*)(?:\/.*?){m}$
用n和m替换7和2,你会得到你的结果
演示:
答案 1 :(得分:0)
使用split()
。
String path = "abc/axs/abc/def/gh/ij/kl/mn/src/main/resources/xx.xml"
String [] tokens = path.split("/");
现在只需打印出来:
for (int i = n; i < m; i++){
System.out.print(tokens[i] + (i != m - 1 ? "/" : ""));
}
答案 2 :(得分:0)
如果必须使用正则表达式:
String s = "abc/axs/abc/def/gh/ij/kl/mn/src/main/resources/xx.xml";
int n = 7;
int m = 10;
Pattern p = Pattern.compile("(?:[^/]*/){" + n + "}((?:[^/]*/){" + (m - n - 1) + "}[^/]*)/.*");
Matcher matcher = p.matcher(s);
if (matcher.matches()) {
System.out.println(matcher.group(1));
}