JSON 数组中用于屏蔽数据的正则表达式

Regex for Masking Data in a JSON Array

我需要在 Splunk 索引器上使用正则表达式屏蔽传入的 JSON 请求。 JSON 数据如下所示:

{"Name":["Jobs","Bill"]}

我需要屏蔽传入的数据,使其看起来像这样:

{"Name":["******","******"]}

我用来屏蔽数据的正则表达式看起来像这样:

s/\"Name\":\"[^"]*\"/"Name":"******"/g

但出于某种原因,我无法屏蔽 JSON 数据。有哪位好心人可以帮忙吗?

你可以使用

s/(?:\G(?!^)\",|\"Name\":\[)\"\K[^\"]*/******/g

要支持转义 \",请使用

s/(?:\G(?!^)\",|\"Name\":\[)\"\K[^\"\]*(?:\.[^\"\]*)*/******/g

regex demo #1 and regex demo #2

详情

  • (?:\G(?!^)\",|\"Name\":\[) - 前一个匹配结束然后 ", 子串,或 "Name":[ 子串
  • \" - " 字符
  • \K - 匹配重置运算符丢弃目前匹配的所有文本
  • [^\"]* - ".
  • 以外的任何零个或多个字符
  • [^\"\]*(?:\.[^\"\]*)* - "\ 以外的任何 0+ 个字符,然后 \ 的零次或多次重复后跟任何字符,但换行符字符然后是 \".
  • 以外的任何 0+ 个字符