在Bash中,我们可以匹配不同长度的字符串吗? 例如,
regex="FOO[0-9]{5}"
if [[ $1 =~ ${regex} ]]
将匹配FOO1111或FOO98765 ...
但我们如何匹配FOO1,FOO123和FOO12345?
regex="FOO[0-9]{1-5}"
无效。
有没有办法以简单的方式或我们只是使用:
regex5="FOO[0-9]{5}"
regex4="FOO[0-9]{4}"
regex3="FOO[0-9]{3}"
regex2="FOO[0-9]{2}"
regex="FOO[0-9]"
if [[ $1 =~ ${regex} || $1 =~ ${regex2} || $1 =~ ${regex3} || $1 =~ ${regex4} || $1 =~ ${regex5} ]]
答案 0 :(得分:7)
您可以使用{min,max}
:
regex="FOO[0-9]{1,5}"
事实上,您可以使用^
和$
进行完全匹配:
[[ $v =~ ^${regex}$ ]]
$ v=FOO
$ [[ $v =~ ^${regex}$ ]] && echo "yes"
$
$ v=FOO1
$ [[ $v =~ ^${regex}$ ]] && echo "yes"
yes
$ v=FOO123456
$ [[ $v =~ ^${regex}$ ]] && echo "yes"
$