("abbb" "abbcc") 如何扩展正则表达式以支持 IFn 接-6ren">
gpt4 book ai didi

regex - 使用 IFn 扩展 Clojure 正则表达式以支持映射

转载 作者:行者123 更新时间:2023-12-02 09:10:06 25 4
gpt4 key购买 nike

我希望能够在正则表达式上调用 map,如下所示:

(map #"ab+c*" ["abbb" "ac" "abbcc"])
=> ("abbb" "abbcc")

如何扩展正则表达式以支持 IFn 接口(interface)?或者有其他方法吗?

最佳答案

Clojure 脚本:

(extend-type js/RegExp
IFn
(-invoke
([match s] (re-find match s))
([match replacement s]
(clojure.string/replace s match replacement))))

现在您可以将正则表达式作为函数调用,甚至将它们传递给 map:

(#"abc+" "abcccc")
=> "abcccc"

(map #"abc+" ["abcccc" "abcccccccc"])
=> ("abcccc" "abcccccccc")

不幸的是,IFn 不是 Clojure 中的协议(protocol),因此您无法扩展它。真不幸。

关于regex - 使用 IFn 扩展 Clojure 正则表达式以支持映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53481008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com