在“使用时转换”也是一种性能开销,因为 `re-pattern` 会进行正则表达式的编译,这应该只发生一次,尤其是在重复使用正则表达式时。
我的当前用例是将大约18000个正则表达式到类别的映射列表应用于字符串流,这个列表不会频繁改变。
将这18000个正则表达式编译保存是非常必要的,否则对6,000个字符串进行`re-find`会花费21秒,而不是9.5秒。如果我`(memoize re-pattern)`,时间将会是26秒。
没有正则表达式相等性,至少基于它们创建的字符串,也会让编写测试变得非常痛苦。
一方面,正则表达式在Clojure中就像是一等公民,它们甚至有自己的内建字面表示法,可以用作哈希表键,但是在等价性方面却遇到了问题。
如果从相同的字符串编译出了 `java.util.regex.Pattern`,生成的对象将以相同的方式表现,因此可以认为它们是相等的。
我看不出不同正则字符串可能产生相同的匹配行为与这个问题有什么相关。我们谈论的是 `=` 运算符,而不是`does-it-behave-the-same?` 运算符... :/
检测正则对象实例是否与另一个相同有什么用例吗?