基于单个出现的分隔符拆分字符串,但不是Java中的双重字符串

时间:2016-04-25 12:10:10

标签: java regex

如何使用单次出现的分隔符来分割字符串而忽略多次出现?

例如,如果字符串包含
aaa,bbb ,, ccc,ddd
我想按如下方式拆分字符串:

AAA
BBB ,, CCC
DDD

尝试使用带有split()的Regex但无法获得所需的结果。

在Javascript中遇到了解决方案:Split string with a single occurence (not twice) of a delimiter in Javascript。在使用或不使用Regex的情况下,是否可以在Java中实现相同的功能?

2 个答案:

答案 0 :(得分:3)

String.split()接受正则表达式作为分隔符,因此您可以使用以下模式:

(?<!,),(?!,)

此正则表达式匹配逗号前面和后面都没有逗号的逗号。

您可以在此处看到它:https://ideone.com/CmtAzX

如果您想同时修剪前导空格,可以使用Nicolas Filotto提到的(?<!,),(?!,) *

答案 1 :(得分:0)

正则表达式允许您指定给定符号既不在前面也不在另一个指定符号后面。在您的情况下,您应该使用(?<!,),(?!,)。一般来说,(?<!x)y(?!z)会找到'y',如果它既不是'x',也不是'z'。