我使用以下shell脚本来检查正则表达式。
#!/bin/bash
urlPattern='/demo/([^\s]+)/'
#echo $urlPattern
if [[ "/demo/akash/" =~ $urlPattern ]];then
echo "match"
else
echo "not match"
fi
给我一个“不匹配”的结果
你可以使用grep
和-P
来理解Perl regexps(就像你的似乎是)和-q
来抑制它的输出并只使用它的退出值:
#!/bin/bash
urlPattern='/demo/([^\s]+)/'
if grep -qP "$urlPattern" <<< "/demo/akash/"; then
echo "match"
else
echo "not match"
fi
bash中的正则表达不理解\s
和类似的结构。你可以使用[:space:]
:
urlPattern='/demo/([^[:space:]]+)/'