我做了这个正则表达式,但它不工作。bash为什么我的正则表达式不工作?
我得到这个字符串: ( '/test/test/test/test-Test/TEST/test.sql'),
我的bash代码:
if [[ ${arrayQuery[$i]} =~ ([a-z0-9]+)\/([a-z0-9]+)\/([a-z0-9]+)\/([a-z0-9-]+)\/([a-z0-9]+)\/([a-z0-9]+).([a-z0-9]+) ]]; then
queryName=$1
echo "test $queryName"
fi
它不是任何人都可以解释我为什么这不起作用?
我在regex101.com上试了我的正则表达式,正则表达式在本网站上工作。
它看起来对我来说,你只是在寻找小写字母和数字,但你必须在本例中字符串大写字母,所以它不应该匹配。 –
您不需要在正则表达式中转义'/'。 ''bash'不会像'sed'那样用它作为分隔符,例如',所以它们没有特殊的含义。 – chepner
我可以问你,为什么你使用这个正则表达式?你是否试图将你的路径分成它的dir组件? –