当分隔符是数据的一部分时,Java分割正则表达式

时间:2016-10-19 14:11:58

标签: java regex

很抱歉,如果这个问题已经解决或关闭,但我一直在寻找很长时间而没有回答。

我必须使用~分隔符来分割我从外部系统接收的行。

我遇到了一个问题,因为有些数据包含~~(〜重复两次),在这种情况下,数据不能拆分。

因此,如果我收到A~B~C~~C~D,我希望将此拆分回来: A, B, C~~C, D

我无法弄清楚我必须使用哪些正则表达式来分割~~

2 个答案:

答案 0 :(得分:2)

您可以按

进行拆分
\b~\b

参见演示。

https://regex101.com/r/t3D2Jp/1

您可以使用

(?:^|\b)~(?:$|\b)

如果你想删除尾随的

答案 1 :(得分:0)

您可以(?<!~)~(?!~)使用负面预测和后备~

示例

String test = "A~B~C~~D~E";
System.out.println(
    Arrays.toString(
        test.split("(?<!~)~(?!~)")
    )
);

<强>输出

[A, B, C~~D, E]

这也适用于两个以上的连续~个,例如与"A~B~C~~~D~E"