在“使用时”转换也是一种性能开销,因为`re-pattern`会进行正则表达式编译,这应该只发生一次,尤其是在重用正则表达式时。
目前我的用例是通过大约18000条正则表达式到类别映射的精选列表来分类字符串流,这些映射很少改变。
非常有必要编译这18000个正则表达式,否则对大约6000个字符串进行`re-find`操作需要21秒,而不是9.5秒。如果我对`(memoize re-pattern)`,它需要26秒。
没有基于它们创建字符串的正则表达式等价性,也会使编写测试变得非常痛苦。
一方面,正则表达式在Clojure中感觉像第一类公民,因为它们甚至有内建的文本语法,可以用作哈希表键,但当涉及到等价性时,它们就崩溃了。
如果从相同的字符串编译出`java.util.regex.Pattern`,则生成的对象将以相同的方式表现,因此可以安全地认为它们是相等的。
我实在不明白为什么不同的正则表达式字符串可能会产生相同的匹配行为。我们谈论的是`=`操作符,而不是`是否表现出相同的行为`操作符... :/
检测正则表达式对象实例是否与其他实例相同的用例是什么?