Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当分隔符是数据的一部分时,Java拆分regexp_Java_Regex - Fatal编程技术网

当分隔符是数据的一部分时,Java拆分regexp

当分隔符是数据的一部分时,Java拆分regexp,java,regex,Java,Regex,对不起,如果这个问题已经解决,或关闭,但我已经搜索了很久没有答案 我必须使用~分隔符拆分从外部系统接收的行 我有一个问题,因为有些数据包含~(~重复两次),在这种情况下,数据不能拆分 因此,如果我收到A~B~C~~C~D,我希望这个拆分返回: A,B,C~~C,D 我不知道我必须使用什么正则表达式才能不拆分~您可以通过 \b~\b 见演示 你可以用 (?:^|\b)~(?:$|\b) 如果您也要删除尾随的,您可以使用(?)并对~进行反向的向前看和向后看 示例 String test = "

对不起,如果这个问题已经解决,或关闭,但我已经搜索了很久没有答案

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

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

因此,如果我收到
A~B~C~~C~D
,我希望这个拆分返回:
A,B,C~~C,D

我不知道我必须使用什么正则表达式才能不拆分
~

您可以通过

\b~\b
见演示

你可以用

(?:^|\b)~(?:$|\b)
如果您也要删除尾随的

,您可以使用
(?)并对
~
进行反向的向前看和向后看

示例

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

这也应该适用于两个以上连续的
~
s,例如
“A~B~C~~~D~e”

您当前的正则表达式是什么?因为我喜欢边缘情况-对于
A~B~~C
我的正则表达式应该是“~”。关于边缘情况A~B~~~~C将永远不会发生。我们将使用A~B~~C代替,并应将其拆分为A,B~~C您可能还希望获得尾随的
~
,即
B~A~
。在这种情况下,您可以编写
(^ |\B)~($\B)
@flkes thanx added我认为在这里不捕获组是多余的?@flkes捕获组没有任何用处:)啊,我明白了。给我再来点咖啡
[A, B, C~~D, E]