【发布时间】:2018-08-24 15:26:41
【问题描述】:
我用 JavaScript 写了这个正则表达式:
node_modules\/(?!react\-hot).*-loader.*
这个想法是匹配每个字符串,如node_modules/babel-loader 或node_modules/css-loader,但排除node_modules/react-hot-loader。
Here is a regex101 link of this working.
(这里的上下文是我正在写Flowtype config file)。
我正在尝试在 OCaml 中测试相同的 RegEx,但我没有成功:
# let regexp = Str.regexp "node_modules/(?!react-hot).*-loader.*";;
val regexp : Str.regexp = <abstr>
# Str.string_match regexp "node_modules/babel-loader" 0 ;;
- : bool = false
# Str.string_match regexp "node_modules/react-hot-loader" 0 ;;
- : bool = false
我不明白为什么babel-loader 字符串与正则表达式不匹配,因为这个正则表达式在 RegEx 101 中适用于 JavaScript 正则表达式。
我了解 OCaml 正则表达式不遵循与 JavaScript 正则表达式相同的标准。但是,在阅读了官方文档here 中有关 OCaml 正则表达式的内容后,我找不到任何可能导致这种行为差异的内容。
【问题讨论】: