regex - 排除 OCaml RegEx 中的特定单词

标签 regex ocaml flowtype

我用 JavaScript 写了这个正则表达式:

node_modules\/(?!react\-hot).*-loader.*

这个想法是匹配每个字符串,如 node_modules/babel-loadernode_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/

相关文章:

java - 使用 replace() 或 replaceall()

OCaml如何在异构列表上实现交换?

recursion - 这两个递归 ocaml 函数有什么区别?

javascript - 如何在 Flow 中使用(或模拟)具有覆盖字段的对象传播?

javascript - 从调用到获取的类型 Promise 是通用的吗?

javascript - 用于快速路由的正确正则表达式语法是什么?

REGEXP_EXTRACT 用于在 Google Data Studio 中提取年份或月份的特定字符串

Java 正则表达式 : find sequence of letter-digit combinations, 允许某些符号

logic - z3 中的相互递归数据类型及其与内置类型的交互

flowtype - 如何让 Flow 理解为 Node.js 编写的代码?