我正在寻找要在nginx位置匹配中使用的正则表达式,它将与指定的结束模式匹配,而不是在指定的其他模式之后的任何地方。
就像,我有文件:
webgl-0.4.0-alpha.1-gzip-dev/streaming-wasm-gzip-dev.wasm.framework.unityweb
webgl-0.4.0-alpha.1-gzip-dev/streaming-wasm-gzip-dev.data.unityweb
webgl-0.4.0-alpha.1-gzip/streaming-wasm-gzip.wasm.framework.unityweb
webgl-0.4.0-alpha.1-gzip/streaming-wasm-gzip.data.unityweb
我想匹配所有\.unityweb
,除了那些dev
之后的字符。我需要匹配前两行。我无法对其进行硬编码,因为文件/目录可能被命名为任意。
通常的((?!dev\/).)*$
不够用,因为它仍然可以解决问题。也不能在此处添加(?<!dev)
,因为它只会直接匹配。
我既不了解线索,也不了解正则表达式!
解决方案不必严格地使用正则表达式,也可以基于nginx。
它可能曾经被问过,但是我似乎不知道找到它的正确关键词。
答案 0 :(得分:0)
答案 1 :(得分:0)
尝试
^(?!.*?dev\/.*).+\.unityweb$
说明:
^
从行首开始(?! _______ )
负前瞻.*?dev\/
可以任意匹配任意字符,直到达到dev后跟斜杠为止。.*
可以任意匹配任意字符.+
匹配任意一个字符多次\.unityweb
-直到到达.unityweb $
行尾
使用完全匹配的内容
编辑
刚意识到您在问题中也有矛盾之处,因为您不想匹配dev/
之前的任何内容,但也希望匹配您给出的前两个示例。
可以通过将负前瞻更改为正前瞻来实现:
^(?=.*?dev\/.*).+\.unityweb$