如何将路径通配符*转换为适配RegexExcludeList的正则实现备份排除
适配的正则表达式方案
直接可用的正则规则如下:^/opt/www/[^/]+/(?:prod/|dev/)?htdocs/var/session(/.*)?$
规则逻辑拆解
^/opt/www/:锚定路径开头为固定前缀,避免误匹配其他位置的同名目录[^/]+:匹配/opt/www/下的单层站点目录,对应原通配的*,避免跨目录匹配导致的排除范围溢出(?:prod/|dev/)?:非捕获分组,可选匹配prod/或dev/段,刚好覆盖三类目标路径结构:- 匹配站点目录下带
prod/的路径 - 匹配站点目录下带
dev/的路径 - 匹配站点目录下直接跟
htdocs/的路径
- 匹配站点目录下带
htdocs/var/session:固定匹配Magento session目录的标准路径段(/.*)?$:可选匹配session目录下的所有子文件/子目录,结尾锚定避免误匹配类似var/session2这类非目标目录
适配调整说明
- 如果你的排除规则只需要匹配session目录本身、不需要包含其下的子内容,可以把末尾的
(/.*)?$替换为$ - 如果你的通配符
*允许匹配跨多层目录(而非单层站点目录),可以把[^/]+替换为.*,但会增加误匹配风险,不建议这么做 - 如果你的正则引擎不需要锚定首尾(即只要路径包含该片段就触发排除),可以去掉开头的
^和结尾的$
匹配校验示例
会被正常匹配的目标路径
/opt/www/mysite/prod/htdocs/var/session/opt/www/mysite/dev/htdocs/var/session/opt/www/mysite/htdocs/var/session/opt/www/mysite/prod/htdocs/var/session/magento_sess_abc123
不会被误匹配的非目标路径
/opt/www/mysite/prod/htdocs/var/sessions(多了s后缀)/opt/www/mysite/prod/htdocs/var/session2/data/opt/www/mysite/htdocs/var/session(前缀不符合)/opt/www/mysite/subdir/prod/htdocs/var/session(多了多层目录,不在原有规则范围内)
内容的提问来源于stack exchange,提问作者Kiuki
相关产品推荐
相关产品推荐

