首页 > 解决方案 > 正则表达式拆分逗号前面没有特定单词

问题描述

我有一个 CSV 字符串,我想用逗号分割,但前提是逗号前面没有在字符串中的其他地方出现特定单词。

下面是一个输入示例。

1,2,3,Test Message,JSON={ "book": { "title": "Hello, there, world" } }

在上述情况下,单词 'JSON=' 之后的任何逗号都不应导致字符串拆分,因此我希望进行以下拆分。

1
2
3
Test Message
JSON={ "book": { "title": "Hello, there, world" } }

理想情况下,我想用它Regex.Split来分割字符串,我认为我需要在后面使用否定的外观,但我不确定实现这一点所需的语法。

任何帮助将不胜感激。

标签: c#regexsplit

解决方案


您可以使用下面的正则表达式来解析此处提到的 CSV 中的 JSON

C# 代码 -

var csvContent = "1,2,3,Test Message,JSON={ \"book\": { \"title\": \"Hello, there, world\" } }";
var split = Regex.Split(csvContent, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

JS 演示 -

const csv = '1,2,3,Test Message,JSON={ "book": { "title": "Hello, there, world" } }';

console.log(csv.split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/));


推荐阅读