首页 > 解决方案 > JQ - 如何为特殊字符定义正则表达式

问题描述

我有一个 JSON 字符串,并试图从中删除所有特殊字符(即由 regex 定义的那些[!@#$%^’&amp;*(),.?":{}|<>])。

我尝试过的一些 jq 表达式如下:

sub("[!@#$%^’&amp;*(),.?":{}|<>]"; "") 

sub("/[!@#$%^’&amp;*(),.?":{}|<>]/g"; "")

sub("/\W|_/g"; "")

有人可以帮忙吗?

标签: regexstringjq

解决方案


使用gsub(_;"")orsub(_;"";"g")其中 _ 是一个 jq 表达式,评估为指定正则表达式的相关 JSON 字符串。

由于 _ 必须是 jq 表达式,因此适用于字符串的 jq 转义规则,例如,要转义双引号,请使用\". 字符串插值也是允许的。

所以在本例中, _ 可能是:

"[!@#$%^’&amp;*(),.?\":{}|<>]"

另请参阅 jq docs 和Regex 模式,包括所有特殊字符


推荐阅读