我有一个input
,需要使用Strings
在/
之间拆分并提取所有regexp
。
我尝试使用:\/\s*(\w+)
这会产生:/pathvalue1
示例输入:
/pathvalue1/path-value-one
/pathvalue2/path-value
/pathvalue3/pathvaluethree
我需要的输出:
pathvalue1
path-value-one
pathvalue2
path-value
pathvalue3
pathvaluethree
任何提示? 非常感谢!
答案 0 :(得分:0)
使用String split函数将字符串拆分为数组
String[] yourarray = Yourstring.split("/");
这应该分开你的路径并给你你的分离值。
您也可以在数组中找到连字符分隔值。
答案 1 :(得分:0)
我会使用分裂方法,因为Kushan在他的回答中指出。但是,如果你仍然想使用正则表达式,那么你可以使用这样的正则表达式:
([\w-]+) or
([a-z-]+) with insensitive flag
<强> Working demo 强>
Java代码
String text = "/pathvalue1/path-value-one\n" +
"/pathvalue2/path-value\n" +
"/pathvalue3/pathvaluethree";
Matcher m = Pattern.compile("([\\w-]+)").matcher(text);
while (m.find()) {
System.out.println(m.group(1));
}
<强> IdeOne working demo 强>
输出
pathvalue1
path-value-one
pathvalue2
path-value
pathvalue3
pathvaluethree
答案 2 :(得分:0)
如果你坚持使用正则表达式,你可以使用这个[^/\\s]+
这样的模式:
String[] strs = new String[]{"/pathvalue1/path-value-one",
"/pathvalue2/path-value",
"/pathvalue3/pathvaluethree"};
String regex = "[^/\\s]+";
for (String str : strs) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
输出
pathvalue1
path-value-one
pathvalue2
path-value
pathvalue3
pathvaluethree
如果你直接使用拆分str.split("/")
,你可以使用拆分一个点来解决你的问题,而不是你可以得到这个结果:
[, pathvalue1, path-value-one]
要确保获得正确的结果,请在网址的开头替换no usefull /或空格,以便您可以使用:
String[] strs = new String[]{"/pathvalue1/path-value-one",
"/pathvalue2/path-value",
"/pathvalue3/pathvaluethree"};
for (String str : strs) {
System.out.println(Arrays.toString(str.replaceAll("^[/\\s]", "").split("/")));
}
输出
[pathvalue1, path-value-one]
[pathvalue2, path-value]
[pathvalue3, pathvaluethree]