$ reg='(\.js)|(\.txt)|(\.html)$'
$ [[ 'flight_query.jsp' =~ $reg ]]
$ echo $?
0
*.jsp不应该根据正则表达式进行匹配,但实际上并没有。
有什么建议吗?
最佳答案
一条有用的评论被删除了。该评论表明运算符优先级是正则表达式通过的原因。他建议使用以下正则表达式作为解决方法。
$ reg='(\.js|\.txt|\.html)$'
$ if [[ 'flight_query.jsp' =~ $reg ]]; then echo 'matches'; else echo "doesn't match"; fi
doesn't match
$ if [[ 'flight_query.js' =~ $reg ]]; then echo 'matches'; else echo "doesn't match"; fi
matches
此正则表达式也适用于(\.js$)|(\.txt$)|(\.html$)
。
关于regex - 这个 BASH 正则表达式有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680127/