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+ 个字符
我需要在 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+ 个字符