在gitlab中找出re2等值以进行负面回溯

时间:2019-01-17 16:35:35

标签: regex gitlab re2

因此,当我们安装Gitlab时,我们配置了一些相当复杂的推送规则,以防止开发人员将某些文件推送到存储库。我们刚刚升级了服务器,看来他们用RE2代替了Ruby regex引擎。当然,RE2显然出于哲学原因不支持负面回溯,因此我需要弄清楚如何使它在数百个gitlab项目中起作用。

这是原始的红宝石,正则表达式

^(?!(?:.*\/)?python\/shim(?:\/|$))(?!(?:.*\/)?src\/test\/resources(?:\/|$))(?!.*gradle-wrapper\.jar$).*\.?:jar|exe|a|ar|cpio|shar|iso|LBR|lbr|mar|sbx|tar|bz2|F|gz|lz|lzma|lzo|rz|sfark|sz|xz|z|Z|7z|s7z|ace|afa|alz|apk|arc|arj|b1|ba|bh|cab|car|cfs|cpt|dar|dd|dgc|dmg|ear|gca|ha|hki|ice|kgb|lzh|lha|lzx|pak|partimg|paq6|paq7|paq8|pea|pim|pit|qda|rar|rk|sda|sea|sen|sfx|shk|sit|sitx|sqx|tar\.gz|tgz|tar\.Z|tar\.bz2|tbz2|tar\.lzma|tlz|uc|uc0|uc2|ucn|ur2|ue2|uca|uha|war|wim|xar|xp3|yz1|zip|zipx|zoo|zpaq|zz|dll)$

现在,将其应用于测试集

test_fixtures/src/main/resources/windows/python/shim/python26.exe
test_fixtures/src/main/resources/windows/python/shim/python37.exe
hi.jar
hi.zip
/src/main/hi.txt
myproject/src/main/hi.txt
/myproject/src/main/hi.txt
/hi.txt
/gradle/wrapper/gradle-wrapper.jar
/src/test/resources/test.exe
/src/main/resources/test.tar.gz

会匹配

hi.jar
hi.zip
/src/main/resources/test.tar.gz

文件gradle-wrapper.jar可以通过,因为它位于“ gradle / wrapper”文件夹中。就像test.exe很好,因为它位于src/test/resources文件夹中,但是如果将其移动到项目的根目录,则不再允许它。

红宝石版本可以完美工作。但是,如果我没有负面的回溯功能,该如何在re2中重新实现呢?

0 个答案:

没有答案