在Bash中,我们可以匹配不同长度的字符串吗?例如.,
regex="FOO[0-9]{5}"
if [[ $1 =~ ${regex} ]]
Run Code Online (Sandbox Code Playgroud)
将匹配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} ]]
Run Code Online (Sandbox Code Playgroud)
你可以使用{min,max}:
regex="FOO[0-9]{1,5}"
Run Code Online (Sandbox Code Playgroud)
事实上,你可以使用^和$完全匹配:
[[ $v =~ ^${regex}$ ]]
Run Code Online (Sandbox Code Playgroud)
$ v=FOO
$ [[ $v =~ ^${regex}$ ]] && echo "yes"
$
$ v=FOO1
$ [[ $v =~ ^${regex}$ ]] && echo "yes"
yes
$ v=FOO123456
$ [[ $v =~ ^${regex}$ ]] && echo "yes"
$
Run Code Online (Sandbox Code Playgroud)