Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式Bash以匹配条件_Python_Regex_Shell_If Statement - Fatal编程技术网

Python 正则表达式Bash以匹配条件

Python 正则表达式Bash以匹配条件,python,regex,shell,if-statement,Python,Regex,Shell,If Statement,我希望匹配以下模式,然后在Jenkins中继续编写shell脚本。字符串应始终以CMR-和SP-开头,后面应跟4个数字,如下所示。我在匹配0-9范围内的4个数字时遇到问题。任何语言都可以 所以我的目的就是这样。我想基于以下条件运行脚本。如果环境与生产环境xyz不匹配,并且与票据id(例如CMR-1234或SP-1234)不匹配,则脚本应退出,而不运行我的部署脚本 有人能帮我吗 CMR-1256和SP-1278 我的bash表达式如下所示 end(){ 出口1 } echo$CMR 如果[!`ec

我希望匹配以下模式,然后在Jenkins中继续编写shell脚本。字符串应始终以CMR-和SP-开头,后面应跟4个数字,如下所示。我在匹配0-9范围内的4个数字时遇到问题。任何语言都可以


所以我的目的就是这样。我想基于以下条件运行脚本。如果环境与生产环境xyz不匹配,并且与票据id(例如CMR-1234或SP-1234)不匹配,则脚本应退出,而不运行我的部署脚本

有人能帮我吗

CMR-1256和SP-1278

我的bash表达式如下所示

end(){
出口1
}
echo$CMR
如果[!`echo$CMR | grep-cE“^CMR-{0,9}”^SP-{0,9}”`-gt 0-a$environment==“xyz”]
然后
回应“未满足任何条件”
结束
fi

我只是修改了我的问题,让它更清晰。

试试这个,它使用的是
bash
RE,而不是
grep

#!/bin/bash

end () { exit 1; }

environment="xyz"

for CMR in CMR-1256 gash SP-1278
do
    echo $CMR

    if [[ ! $CMR =~ ^(CMR|SP)-[0-9]{4}$ ]] || [[ $environment != "xyz" ]]
    then
        echo "None of the conditions met in $CMR $environment"
        #end
    else
        echo "$CMR matched $environment"
    fi
done
给出:

CMR-1256
CMR-1256 matched xyz
gash
None of the conditions met in gash xyz
SP-1278
SP-1278 matched xyz

四位数字模式是
[0-9]{4}
(ERE和NFAs)或
[0-9]{4\}
(BRE)。我不知道你要用什么。把它当作一个提示。谢谢你的提示。然而,它并没有像想象的那样工作。我使用了下面的grep条件grep-cE“^CMR-[0-9]{4}| ^SP-[0-9]{4}”,但我的脚本即使使用了CMR-123455也在继续。我希望它只限于CMR-5432(4个字符)。我也试过了其他的注释。这是
的优先顺序吗这就是问题所在?您能否澄清
-a$environment==“xyz”
的目的?
会将其更改为
=。顺便说一句,你评论中的RE与问题中的RE不同。那么,你想要4位数还是最多4位数?我的目的就是这样。我想基于以下条件运行脚本。如果环境与生产环境xyz不匹配,并且与票据id(例如CMR-1234或SP-1234)不匹配,则脚本应退出,而不运行我的部署脚本。@cdarke我的要求在CMR-或SP-之后正好是4位数字,并且应该始终是一个数字。很抱歉,这也不起作用。当我将5个数字与SP或CMR一起传递时,它仍在工作。end(){exit 1;}echo$CMR如果[[!$CMR=~^(CMR|SP)-[0-9]{4}]|[deployment|u environment!=“production”]]那么echo“在$CMR$environment中没有满足任何条件”end-else echo“$CMR matched$environment”fiOK,我会解决这个问题<代码>$
添加到RE末尾。