regex 正则表达式使用逗号分割,但使用双逗号转义时除外(Java、Scala)

ix0qys7i  于 2023-03-24  发布在  Java
关注(0)|答案(1)|浏览(114)

谁能帮我用java/scala中的正则表达式来分割逗号上的字符串,而不是用逗号转义。
例如:
"value1,value2,value3" -> ["value1","value2","value3"]
"value1,,6,value2,value3" -> ["value1,,6","value2","value3"]
这里逗号既用作分隔符,也用于转义分隔符。
多谢了!

holgip5t

holgip5t1#

使用((?<!,),(?!(,{2})*+,))。它匹配任何,,它不紧跟逗号,也不紧跟逗号(或奇数个逗号)。

for(String a : "value1,,6,value2,value3,,,val4,,,,val5".split("((?<!,),(?!(,{2})*+,))")) {
    System.out.println(a.replaceAll(",,", ","));
}

输出:

value1,6
value2
value3
,val4,,val5
,,val6

此外,拆分字符串仍然包含“转义”逗号,因此是.replaceAll(",,", ",")

相关问题