gpt4 book ai didi

java - 正则表达式按分隔符分割,排除转义符并保留空字符串

转载 作者:行者123 更新时间:2023-12-01 12:56:04 27 4
gpt4 key购买 nike

我需要使用“|”分割字符串作为分隔符,可以使用前面的“?”进行转义,在这种情况下,不应将其视为分隔符。我还想在结果中保留空字符串,其中有多个分隔符彼此相连,中间没有任何内容 - 我实际上对这部分有问题。

几个例子:

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

我使用下面的正则表达式,它在转义定界符时正确分割字符串,但在“||”的情况下它会丢弃所有空字符串。我正在使用模式/匹配器和 Java。

([^?\\|]|\\?.)+

感谢任何帮助。

最佳答案

您可以尝试将此PatternString.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]

关于java - 正则表达式按分隔符分割,排除转义符并保留空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23884885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com