Linux Red Hat Enterprise Linux服务器6.9版(圣地亚哥)
问题
我有两个Jenkins作业,它们都调用另一个公共/可重用的下游作业(使用regex来选择其rpm)。实际的代码是用Ruby编写的(在这里我使用的是::Dir.glob("<pattern>",''),它在选择正确的rpm名称时不起作用(没有给出任何错误),但这里我只关注regex部分。
在job1中,在我的工作区中,我看到myrpm.rpmmyrpm-extra.rpm
在job2中,在我的工作区中,我看到了myrpm-3.0.0.1027-2018_12_21_121519.noarch.rpmmyrpm-extra-3.0.0.1027-2018_12_21_121519.noarch.rpm的rpms,这是我通过一些AQL从Artifactory下载这些文件后得到的。
一旦从Aritfactory(即Jenkins工作区中的可用资源)下载了rpm,我就使用这个常见的下游作业来选择所需的给定rpm
使用"${rpmname}*.rpm"regex。
问题是,当我将rpmname参数值作为“myrpm”传递时,逻辑是选择myrpm-extra.rpm(在Job1中)或myrpm-extra-3.0.0.1027-2018_12_21_121519.noarch.rpm(Job2)而不是选择正确的值(非额外的值),因为-字符的顺序是由ASCII序列决定的。
我测试了regex并查看了为什么在最后一个命令中没有看到预期的输出。正则表达式中的1?不是会给我们任何一行带有arun字符出现的0 or 1吗?

[giga@linux-server giga]# echo -e "arun\narun1\narun2\narun11" |grep "arun"
arun
arun1
arun2
arun11
[giga@linux-server giga]#

[giga@linux-server giga]# echo -e "arun\narun1\narun2\narun11" |grep "arun1"
arun1
arun11
[giga@linux-server giga]#

[giga@linux-server giga]# echo -e "arun\narun1\narun2\narun11" |grep "arun1?"
[giga@linux-server giga]#

问题:
一。如果我使用1,为什么会这样?
2。为什么它不能与egrep一起工作,而grep手册页/示例告诉它支持它?
三。如果我将grep作为作业参数的值传递,那么它可以在Job1和Job2中工作,其中rpm filename包含短的和完整的rpm名称。
此处:https://www.cyberciti.biz/faq/grep-regular-expressions/(搜索grep正则表达式运算符)和
myrpm显示:
   Repetition
       A regular expression may be followed by one of several repetition operators:
       ---------------------------------------------------------------
       ?      The preceding item is optional and matched at most once.
       ---------------------------------------------------------------
       *      The preceding item will be matched zero or more times.
       +      The preceding item will be matched one or more times.
       {n}    The preceding item is matched exactly n times.
       {n,}   The preceding item is matched n or more times.
       {,m}   The preceding item is matched at most m times.  This is a GNU extension.
       {n,m}  The preceding item is matched at least n times, but not more than m times.

最佳答案

egrepgrep -E相同,在您的情况下,使用的regex需要-E-P来支持?
请搜索不同的regex支持。有POSIXExtendedPerl等。
资源:
POSIX Basic and Extended Regular Expressions
Perl regular expressions
Regular expression

10-04 12:42