Bash中判断路径匹配通配路径前缀的正则表达式实现方法
答案
- 该需求完全可以通过正则实现,不需要拆分路径处理。
- 匹配规则对应的正则表达式为:
^this/is/([^/]+/it/)?$ - 正则逻辑说明:
^匹配路径字符串开头,$匹配路径字符串结尾,避免出现部分匹配的问题- 固定前缀
this/is/匹配必选的前两级目录 - 可选分组
([^/]+/it/)?对应模式中的*/it/部分:[^/]+匹配任意不含斜杠的文件夹名(对应通配符*),?代表该部分要么完整存在,要么完全不存在
- Bash 中正确使用示例:
# 替换为你要判断的目标路径 target_path="this/is/definitely/it/" pattern='^this/is/([^/]+/it/)?$' if [[ $target_path =~ $pattern ]]; then echo "符合规则" else echo "不符合规则" fi
- 测试效果完全匹配你给出的示例:
- 返回true:
this/is/、this/is/definitely/it/ - 返回false:
whats/this/、this/is/a/test/
- 返回true:
注意:Bash的
=~运算符右侧的正则不要加双引号,否则会被识别为普通字符串而非正则表达式,导致匹配失效。
内容的提问来源于stack exchange,提问作者zomega
相关产品推荐
相关产品推荐

