我有以下形式的字符串:
/path/ /path\ with\ space/ /another/
我需要拆分它,所以我最终得到一个包含:
的数组[ /path/, /path with space/, /another/ ]
是否有一个简单的正则表达式可以解决这个问题?以前我使用的是\ s +,但显然这在这里不起作用。
答案 0 :(得分:7)
String s = "/path/ /path\\ with\\ space/ /another/";
String[] parts = s.split("(?<!\\\\)\\s+");
System.out.println(Arrays.toString(parts));
// prints [/path/, /path\ with\ space/, /another/]
请注意,第二个元素仍包含\
个,您需要自行删除。
for (int i=0; i<parts.length; i++)
{
parts[i] = parts[i].replaceAll("\\\\ ", " ");
}
System.out.println(Arrays.toString(parts));
// prints [/path/, /path with space/, /another/]
是的,四 \
只是匹配字符串中的一个。
答案 1 :(得分:1)
如果你将它拆分为和/“(注意空格)并在每次匹配后附加正斜杠怎么办?我不确定拆分是否适用于后视。
答案 2 :(得分:0)
您是否尝试使用[/](w|s)+[/]
?