gpt4 book ai didi

正则表达式模式匹配细化

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:52 31 4
gpt4 key购买 nike

我有一个返回给变量的 json,我试图只从 json 中获取值。我只限于 grep、sed 和 awk

RESULTS='{ "results" : [ { "repo" : "appdeploy", "path" : "org/test/cxp/python/1.0-SNAPSHOT", "name" : "python-1.0-20170519.130808-42.jar" } ], "range" : { "start_pos" : 0, "end_pos" : 1, "total" : 1 } }'
echo $RESULTS | grep -o '"path" : "(.*)",'

返回结果

"path" : "org/test/cxp/python/1.0-SNAPSHOT",

老实说,我唯一想要的部分是

org/test/cxp/python/1.0-SNAPSHOT

最佳答案

jq , 你可以使用 '.results[0] | .path'筛选。你可以玩弄 this tool online here .

但是,如果您无权访问 jq ,您可以使用基于 PCRE 的 grep命令如

grep -oP '(?<="path" : ")[^"]+'

-P选项启用 PCRE 正则表达式语法用法,您可以在其中使用 lookarounds只检查模式匹配,但不将匹配的文本包含到返回的匹配值中。

图案细节

  • (?<="path" : ") - 与前面有 "path" : "位置 相匹配的正面回顾子串
  • [^"]+ - 匹配并消耗(添加到匹配值)除"以外的1个或多个字符的否定括号表达式.

参见 online grep demo :

RESULTS='{ "results" : [ { "repo" : "appdeploy", "path" : "org/test/cxp/python/1.0-SNAPSHOT", "name" : "python-1.0-20170519.130808-42.jar" } ], "range" : { "start_pos" : 0, "end_pos" : 1, "total" : 1 } }'
echo $RESULTS | grep -oP '(?<="path" : ")[^"]+'

打印 org/test/cxp/python/1.0-SNAPSHOT .

关于正则表达式模式匹配细化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44072342/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com