1

我正在使用树参数来过滤从 API 返回的 JSON 数据,效果很好。我的问题是我需要从一个包含一堆我不关心的东西的数组中获取一些特定的数据。我想知道是否有一种方法,使用树命令,使用正则表达式或包含字符串进行过滤?

例如,返回所有以 MyProject 开头的文件名:

   http://myapi.com?tree=fileName=MyProject*
4

2 回答 2

1

正则表达式非常适合正则语法。

树倾向于遵循上下文无关的语法使用可以支持上下文感知操作的语言(例如XPath )可能会做得更好。是的,如果没有XPath的额外功能,一些非常简单的项目可能会工作;但是,一旦您确实踩到了超出常规语法可能的用例(它们仅支持可搜索内容的一小部分),实际上不可能使用手中的工具完成搜索。

如果您想了解常规语法如何受到限制,请研究抽水引理,然后深入思考它的含义。 快速复习一下解析理论可能也很有用。你反对数学,包括数学中包含逻辑运算的部分。这不是一个很难解决的问题,已经证明正则表达式无法匹配上下文无关语法。

如果您只是对快速完成工作更感兴趣。我建议您从阅读XPath开始,并尝试利用其中一种已经可用的工具,或者至少在您的树匹配工作中使用它作为指南。

于 2013-10-10T14:21:11.720 回答
1

我发现不使用 JSON 而是切换到 XML,您可以使用 XPATH 进行过滤。查找名称以“Test”开头的所有工作 url 的示例如下:

https://{jenkins_instance_url}/view/All/api/xml?tree=jobs[name,url]&xpath=/*/job[starts-with(name,'Test')]/url&wrapper=jobs
于 2017-07-06T18:59:38.690 回答