用于过滤的正则表达式

时间:2017-06-16 05:56:24

标签: regex jenkins jenkins-plugins

我在jenkins中安装了git参数插件。有一个从git过滤分支的选项需要一个正则表达式。所以我在我的分支下拉列表中得到的是“origin / master”。所以我需要一个正则表达式,我需要只有单词“master”,并希望从所有分支名称中排除“origin /”。任何帮助?还是建议?

3 个答案:

答案 0 :(得分:1)

嗯,这是regexp的事情 - 他们并不完全"排除"事情,他们只匹配(并且该匹配可以选择用于替换)。

因此,您需要更多地考虑分支名称的结构,并了解哪种规则可以最好地描述它。

#[^/]+$##在这里用作正则表达式分隔符;如果你的系统不支持任意分隔符,则斜杠的等价物是/[^\/]+$/,它更难读,但工作方式相同)可以是一个选项 - 它将匹配所有内容,直到不包含斜杠的字符串/行的结尾。只要您的分支名称不包含更多斜杠(例如origin/feature/super-cool-stuff会导致super-cool-stuff实际上可能期望feature/super-cool-stuff),此方法就可以正常工作。

换句话说,如果不知道分支命名规则是什么,就没有单一的正确答案。

答案 1 :(得分:0)

如果要从分支名称中排除origin/,则可以尝试仅搜索本地分支:

git branch | grep master

请注意,git branch没有选项只搜索本地分支,-r只搜索远程跟踪分支,-a搜索所有内容。

答案 2 :(得分:0)

您可以使用strip option of format

git for-each-ref --format='%(refname:strip=3)' --shell --no-merged @ refs
# or
git branch -a --format='%(refname:strip=3)'

这样,refs/remotes/origin不是输出的一部分,你可以在你的远程分支上grep。

关于Jenkins及其在“Branch to Build”中的分支过滤,您可以使用:

^master

仅隔离master,而不是origin/master 您可以使用negative lookahead as in this answer排除origin的任何分支:

:^(?!.*origin/).*$