regex - 这个 BASH 正则表达式有什么问题

标签 regex bash

$ 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/

相关文章:

Python Regex 从数据结构中提取多条数据

php - 使用代码接收从链接中仅提取数字

linux - Bash:我的输出在一行

c# - 正则表达式提取 html 正文

java - java字符串替换效率

linux - 使用 sed 替换文本文件中的第一行

linux - 根据带空格的文件名将文件移动到子目录

Bash,调用源自脚本的函数?

Linux:在 Bash 中查找默认 PDF 查看器的路径

javascript - 匹配两个字符串之间的字符串