我有一个像这样的JSON结构,我已经将它作为字符串读入了bash变量中:
{
"elem1": "val1",
"THEELEM": "THEVAL",
"elem3": "val3"
}
我想使用正则表达式在"THEELEM": "THEVAL"
上进行匹配。如果我尝试将单词以JSON形式存储在result
中的单个单词,则可以使用它:
[[ $result =~ THEVAL ]] && echo "yes"
但是我想在像这样的密钥对上匹配:
[[ $result =~ "THEELEM": "THEVAL" ]] && echo "yes"
这给了我语法问题。我尝试转义,单引号和三引号无济于事。任何帮助表示赞赏。
答案 0 :(得分:1)
您可以创建变量$ expr来保存要匹配的字符串,然后将其用于正则表达式。
expr='"THEELEM": "THEVAL"'
[[ $result =~ $expr ]] && echo "yes"
的启发
答案 1 :(得分:1)
报价对我有用。
[[ $result =~ '"THEELEM": "THEVAL"' ]] && echo "yes"
请注意,引用模式会禁用特殊正则表达式字符的识别,而只是搜索文字子串。在这里这不是问题,因为您没有任何通配符或其他非文字模式字符。但是,如果这样做了,就必须将模式放在变量中,就像@noah的答案一样。