奥卡姆 |正则运算符

OCaml | regex operator

我的正则表达式与我想要的不匹配。

"/.*\.\(css\)\|\(js\)\|\(png\)"

目前正在匹配:

/static/css/main.css

但是不匹配:

/static/js/prettify.js

或者:

/static/img/preview.png

对于我遗漏的任何建议,我将不胜感激。谢谢

让我们在没有特定语言引用的情况下简化您的正则表达式:

.*\.(css)|(js)|(png)
         ↑
[       ]|[  ]|[   ]  

您正在匹配 /static/css/main.css,因为第一个 | 适用于模式 .*\.(css)。您应该在扩展名周围添加另一个括号:

.*\.((css)|(js)|(png))

现在 .*\. 捕获第一部分(在扩展之前),然后您正在寻找 cssjspng.

在你的语言中,我想它会是这样的:

/.*\.\(\(css\)\|\(js\)\|\(png\)\)