当分隔符是数据的一部分时,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]