我需要使用" |"分割字符串。作为一个分隔符,可以使用前面的"?"进行转义,在这种情况下,它不应被视为分隔符。 我还想在结果中保留空字符串,其中有多个分隔符彼此跟随,其间没有任何内容 - 我实际上对此部分有问题。
几个例子:
aaa|bbb|ccc
Result:
aaa
bbb
ccc
aaa?|bbb|ccc
Result:
aaa?|bbb
ccc
aaa?|bbb||ccc|||ddd
Result:
aaa?bbb
<empty string>
ccc
<empty string>
<empty string>
ddd
我正在使用下面的正则表达式,它在转义分隔符时正确地分割字符串,但是在&#34; ||&#34;的情况下它丢弃所有空字符串。我正在使用Pattern / Matcher和Java。
([^?\\|]|\\?.)+
任何帮助表示感谢。
答案 0 :(得分:1)
您可以尝试将此Pattern
与String.split
方法一起使用:
String[] input = {"aaa|bbb|ccc", "aaa?|bbb|ccc", "aaa?|bbb||ccc|||ddd"};
for (String s: input) {
// | negative lookbehind for "?" (escaped)
// | | "|" (escaped)
// | |
System.out.println(Arrays.toString(s.split("(?<!\\?)\\|")));
}
<强>输出强>
[aaa, bbb, ccc]
[aaa?|bbb, ccc]
[aaa?|bbb, , ccc, , , ddd]