我需要分割一个传递正则表达式的字符串,但分割标记只是正则表达式的第 1 组。一个例子:
原始字符串 = “paulo\\;Is\\;In;Real;Doubt”
使用 split = ["paulo\\;Is\\;In", "Real", "Doubt"] 形成的数组
我的第一个想法是用作正则表达式:[^\\\\][;]
,但它显然不起作用。
输出为:["paulo\\;Is\\;I", "Rea", "Doubt"]
(我正在使用String.split()
方法。)
我的第二个想法是使用 ;
作为一个组:[^\\\\]([;])
,但我只是无法告诉split 方法仅将 group(1)
视为拆分 token 。
最佳答案
你的问题很难回答,因为它完全不清楚。您说您的分割 token “只是正则表达式的第 1 组”。什么正则表达式的第 1 组?
编辑:仍然很难回答,为什么不澄清一下?
无论如何,如果您想要的是“在 ';' 上拆分,但仅当它不使用 '\' 转义时”,那么您可以使用负向后查找来获得您想要的。
示例:
"paulo\\;Is\\;In;Real;Doubt".split("(?<!\\\\);");
给出
[ "paulo\;Is\;In", "Real", "Doubt" ]
关于考虑捕获组的 Java 模式拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740530/