为什么在Azure DevOps扩展的task.json中使用#regex?它要检查什么?

问题描述

我遇到了这个问题,想知道这意味着什么以及它如何工作? 在这里使用#regex的意义何在?它如何扩展?

https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/DownloadPackageV0/task.json

 "endpointUrl": "{{endpoint.url}}/{{ **#regex ([a-fA-F0-9\\-]+/)[a-fA-F0-9\\-]+ Feed }}_apis**/Packaging/Feeds/{{ **#regex [a-fA-F0-9\\-]*/([a-fA-F0-9\\-]+) Feed** }}{{#if view}}@{{{view}}}{{/if}}/Packages?includeUrls=false"

我也想知道如果Feed中有成千上万个软件包,它将返回多少个软件包并显示在“任务输入UI”下拉列表中。是否有已知的限制(例如前100个)?

解决方法

#regex似乎没有任何地方的文档,但是它使用两个以空格分隔的参数。第一个是正则表达式,第二个是“路径表达式”,标识要与之匹配的值,在这种情况下为feed输入参数的值。如果正则表达式与该值匹配,则返回第一个捕获子表达式,否则返回空字符串。

在此特定上下文中,feed参数的格式为'projectId / feedId',其中projectId和feedId是GUID,对于组织范围的提要(例如,不属于在内部)。因此,第一个正则表达式提取项目ID并将其插入URL,第二个正则表达式提取提要ID并将其插入URL。

在撰写本文时,其调用的API的默认限制为1000。

,

Regex代表正则表达式,它使您可以匹配任何 pattern 而不是精确的字符串。您可以在Azure Devops here

中找到有关如何使用它的更多信息。

此正则表达式非常具体。在这种情况下,正则表达式([a-fA-F0-9\\-]+/)[a-fA-F0-9\\-]+ \匹配以下1)个字母a-f(小写或大写)或2个\或3个中的一个或多个 -后跟/,然后再一个或多个这些字符。

您可以将正则表达式[a-fA-F0-9\\-]+/)[a-fA-F0-9\\-]+复制到https://regexr.com/中以进行操作,以查看与模式匹配的内容和不匹配的内容。
例子:

  • 它匹配a/a a/b abcdef-\/dcba
  • 不匹配/aabcdefthis-doesn't-match

请注意,完整的端点由正则表达式和硬编码的字符串组成!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...