用逗号分割字符串,同时忽略空格前后的逗号

时间:2021-04-14 17:57:05

标签: regex scala csv split

我一直在思考这个问题 - 但我想要解决的本质是我有一个字符串正在从更大的字符串中解析出来,其中包含许多由逗号“,”分隔的字段看起来像这样:

{parameters format=,, =separtorChar=|, field.delim=,}

请注意,您可能会注意到 - 一些“值”实际上是逗号“,”本身 - 因此,当我拆分为“,”时,它会产生错误的结果。

我已经能够使用以下正则表达式解析出分隔逗号:

(?<![,],),(?!,)

这给了我分隔逗号但最终也会将字符串末尾的逗号视为分隔符而不是值 结果:

{parameters format=,{,} =separtorChar=|{,} field.delim={,}} <-- this comma "," is a value 

不能保证逗号总是在“=”旁边,所以我不能使用模式搜索或省略空格,因为值需要保持完整,因为它在“=”和以下字段之间或行尾

任何想法或建议将不胜感激
谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用 (?=\s) 正向前瞻来匹配紧跟其后带有空格的位置:

(?<!,,),(?=\s)

参见regex demo

详情

  • (?<!,,) - 一个否定的lookbehind,匹配前面没有紧跟,,(两个逗号)的位置
  • , - 逗号
  • (?=\s) - 匹配紧跟空格的位置的正向前瞻。