あなたは、このようなパターンで、この[^/\\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
regex demo
をあなたの問題を解決することができますまた、1つのポイントだけを分割して使用するあなたはこの結果を得ることができるよりも、あなたが直接str.split("/")
を分割使用する場合T:
[, pathvalue1, path-value-one]
は、あなたが正しい結果を得ることを確認するためには、あなたが使用できるように、URLの先頭に無い便利/またはスペースを置き換えます。
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("/")));
}
出力単に `/`使用[ `スプリット()`](https://docs.oracle.com/javase/8/docs/で文字列を分割しない理由
[pathvalue1, path-value-one]
[pathvalue2, path-value]
[pathvalue3, pathvaluethree]
api/java/lang/String.html#split-java.lang.String-)? –
私は 'regexp'でもっと「プロフェッショナル」な作業をしているように感じています。ええ、私は知っている、最高の議論ではありません。私は 'regexp'マッチングを学ぼうとしています。 – nightfixed
他の人が言ったように、あなたの質問に答えるために:\/\ s *([^ /] +) ';-) – Lothar