如何在Reason中字符串matchAll



我正在尝试用matchAll()复制javascript中的操作

const names = [
...withoutSlashes.matchAll(/(?<=Pos. d+ - )(.*?)(?=","Importe)/g),
];

我看到Reason有Js.String.match,但我找不到matchAll。我想这是因为matchAll是一个更新的ecmascript。

有什么提示吗?哪种方式是表演比赛的好方法?或者我缺少一个特定的Reason功能?

根据接受的答案,我想添加一个遵循ReScript约定的版本。不鼓励使用[@bs.send.pipe],ReScript语言正式推荐管道优先运算符(->而不是|>(。

像这样:

[@bs.send]
external matchAll: (string, Js.Re.t) => Js.Array.array_like(array(string)) =
"matchAll";
let matches: array(string) =
matchAll("abc", [%re "/[a-c]/g"])->Js.Array.from;

您可以自己绑定到它。它最大的问题是它返回一个迭代器,而我们也没有绑定迭代器。但我们可以使用Js.Array.array_like('a),然后使用Js.Array.from:将其转换为阵列

[@bs.send.pipe: string]
external matchAll: Js.Re.t => Js.Array.array_like(array(string)) = "matchAll";
let matches = "abc" |> matchAll([%re "/[a-c]/g"]) |> Js.Array.from;

相关内容

  • 没有找到相关文章

最新更新