OCaml |正则表达式运算符

时间:2015-05-28 11:31:18

标签: regex ocaml

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

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

目前正在匹配:

/static/css/main.css

但它不匹配:

/static/js/prettify.js

或者:

/static/img/preview.png

我很欣赏我所遗漏的任何建议。感谢。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

用你的语言我认为它会像:

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