正则表达式匹配以app开头目录并排除特定目录app1.8.34
匹配以app开头但排除特定目录的正则方案
没问题,根据你的需求,我整理了几种实用的正则方案,适配不同的使用场景:
通用正则表达式(适用于多数支持正则的工具)
如果你需要一个纯正则表达式来完成匹配,可以使用负向预查的写法:
^app(?!1\.8\.34$).*$
拆解一下这个正则的逻辑:
^app:确保字符串以app开头(?!1\.8\.34$):负向预查,用来排除后面紧跟1.8.34且直接结束的情况(这里的\.要转义,因为正则里.代表任意字符).*$:匹配开头为app且不满足排除条件的剩余所有内容
用这个正则测试你的目录列表,会匹配到app1.6.11和app1.7.12,自动排除app1.8.34以及非app开头的test1、test2。
Shell环境下的简化方案
如果是在bash/zsh等shell环境里,也可以不用纯正则,结合grep的反向匹配更直观:
ls | grep '^app' | grep -v '^app1\.8\.34$'
- 第一个
grep '^app'先筛选所有以app开头的目录 - 第二个
grep -v反向排除掉app1.8.34这个特定目录
这种写法更易读,适合日常shell操作场景。
内容的提问来源于stack exchange,提问作者Jeet
相关产品推荐
相关产品推荐

