我用 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
string 与 RegEx 不匹配,因为这个相同的 RegEx 在 RegEx 101 中适用于 JavaScript RegEx。我知道 OCaml 正则表达式不遵循与 JavaScript 正则表达式相同的标准。但是,在阅读官方文档 here 中有关 OCaml 正则表达式之后,我找不到任何可能导致这种行为差异的东西。
最佳答案
显然,!
不是 OCaml 正则表达式中的特殊字符。因此,您似乎正在使用不受支持的功能。
关于regex - 排除 OCaml RegEx 中的特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49305881/