使用\ d的RegEx在使用[[

等待

我写了以下脚本。稍后将在构建过程中使用它。我的目标是确定它是预发行版还是发行版。要将其存档,我将$ release与RegEx进行比较。如果我的RegEx匹配,则为预发行版本;如果不匹配,则为预发行版本。

#/bin/bash
release="1.9.2-alpha1"
echo "$release"
if [[ "$release" =~ \d+\.\d+\.\d+[-]+.* ]];then
echo "Pre"
else
echo "Release"
fi

但是结果是我总是得到以下结果:

~$ bash releasescript.sh
1.9.2-alpha1
Release

版本:

Ubuntu 18.04.1 LTS

我使用此编辑器测试了RegEx。我被困了至少6小时,因此,我将不胜感激。

列昂尼德·缪

\d并且\w不能在POSIX正则表达式中使用,[[:digit:]]但是您可以使用

#/bin/bash
release="1.9.2-alpha1"
echo "$release"
LANG=C # This needed only if script will be used in locales where digits not 0-9
if [[ "$release" =~ ^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+-+ ]];then
echo "Pre"
else
echo "Release"
fi

我已经测试了此脚本,对于给定的$ release,它输出“ Pre”

检出您的regex构建器,它仅与perl兼容和javascript regex一起使用,而您需要posix或posix扩展。

通过@dessert

[0-9]是的更短选择[[:digit:]]由于要匹配字符串的开头,因此应添加^,而.*结尾则是多余的:^[0-9]+\.[0-9]+\.[0-9]+-+–使用组可以将其进一步缩短为:^([0-9]+\.){2}[0-9]+-+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章