有一个具有以下结构的公司文件存储:Группа/Проект/Состояние/Файл
有一个用于搜索和处理具有指定搜索条件的文件的内部实用程序。
嵌套深度不是恒定的,比如有的组有子组,有的项目有子项目,有的文件少的项目没有子目录的状态,体现在文件名上。结构不能改变。
在 99% 的情况下,搜索条件如下所示: Group1 和 Group2 组中的所有文件,状态 State1 和 State2 除外
因此,在实用程序中,以两种正则表达式的形式进行筛选:
- 跳过与第一个不匹配的文件 - 按组/子组/项目退出
- 跳过与第二个匹配的文件 - 按状态退出
有些项目需要处理所有状态,也就是说,第二个正则表达式不应该起作用。
如果没有填写正则表达式,程序不会开始处理。
实际上问题是:哪个 perl 兼容(PCRE)正则表达式不会匹配任何文件名?
linux上的PS文件存储,所以任何字符都可以在文件名中
永远不会匹配任何字符串的正则表达式:
x^- 一个字母x后跟一个字符串的开头(通用模式)$x- 行尾后跟一个字母x(通用模式)x\ba- 一个字母x后跟一个词边界和一个字母a(需要支持词边界,在 PostgreSQL 中是\y)\b\B/\B\b- 必须既是字边界又是相反位置的位置(需要支持字边界,在 PostgreSQL、Tcl、TRE 中是\mand\M)x++x- 一个或多个之后x,必须多一个字母x(不回溯)(需要支持超贪心量词)(?>x+)x- 如同x++x(?!)- 当前位置之后应该没有任何内容(需要预览块支持)(?=a)x- 在当前位置之后必须是aANDx(需要预览块支持)(?!a)a- 紧跟在当前位置之后不应该是a,而是应该是a(需要预览块支持)(*FAIL)- 与(?!)(仅 PCRE)相同(*F)- 与 相同(*FAIL)。