将url与包含正斜杠的正则表达式匹配

问题描述 投票:0回答:2

我使用以下shell脚本来检查正则表达式。

#!/bin/bash
urlPattern='/demo/([^\s]+)/'
#echo $urlPattern
if [[ "/demo/akash/" =~ $urlPattern ]];then
  echo "match"
else
echo "not match"
fi

给我一个“不匹配”的结果

bash shell unix
2个回答
0
投票

你可以使用grep-P来理解Perl regexps(就像你的似乎是)和-q来抑制它的输出并只使用它的退出值:

#!/bin/bash
urlPattern='/demo/([^\s]+)/'
if grep -qP "$urlPattern" <<< "/demo/akash/"; then
  echo "match"
else
  echo "not match"
fi

5
投票

bash中的正则表达不理解\s和类似的结构。你可以使用[:space:]

urlPattern='/demo/([^[:space:]]+)/'
© www.soinside.com 2019 - 2024. All rights reserved.