正则表达式:删除引号内的逗号

Regex: Remove Commas within quotes

我正在使用 NiFi,我有一系列 JSON 如下所示:

{
  "url": "RETURNED URL",
  "repository_url": "RETURNED URL",
  "labels_url": "RETURNED URL",
  "comments_url": "RETURNED URL",
  "events_url": "RETURNED URL",
  "html_url": "RETURNED URL",
  "id": "RETURNED_ID",
  "node_id": "RETURNED id",
  "number": 10,
    ...
  "author_association": "xxxx",
  "active_lock_reason": null,
  "body": "text text text, text text, text text text, text, text text",
  "performed_via_github_app": null
}

我的重点是“body”属性。因为我将它们合并成一个巨大的 JSON 以转换为 csv,所以我需要“正文”文本中的逗号消失(以帮助以后可能的 NLP)。我知道我可以只使用替换文本,但捕获逗号本身是我正在努力的部分。到目前为止,我有以下内容:

((?<="body"\s:\s").*(?=",))

不过,我看过的每本指南都与引号中的逗号不匹配。有什么建议吗?

您可以使用

(\G(?!^)|\"body\"\s*:\s*\")([^\",]*),

如果字符串中有转义序列使用

(\G(?!^)|\"body\"\s*:\s*\")([^\",\]*(?:\.[^\",\]*)*),

参见 regex demo (and regex demo #2),替换为 </code>。</p> <p><em>详情</em>:</p> <ul> <li><code>(\G(?!^)|\"body\"\s*:\s*\") - 第 1 组:上一场比赛结束或 "body",零个或多个空格,:,零个或多个空格

  • ([^\",]*) - 第 2 组 (</code>):除 <code>",
  • 之外的任何零个或多个字符
  • , - 逗号(即 removed/replaced)。