RE2很棒。快速和确定性。
但是,它只支持UTF8。我的字符串本身就是UTF16,来回转换会降低性能。
在UTF16中实现RE2本地功能有多困难?
在中实现本机UCS-2功能有多困难?(这应该容易些)
也就是说,一个普通程序员需要多少个小时才能做到这一点。
这件事困扰了我几个星期,所以我想我应该问一问!
发布于 2012-02-10 02:51:38
RE2的创建者拉斯·考克斯( Russ )对UCS-2支持发布了这个补丁。但是,UCS-2不支持某些断言。Russ的答复逐字张贴:
你好。RE2在开源之前采用了UCS-2模式,但它不能支持^、$和\b等断言,这限制了它的实用价值。如果你不需要那些操作员,那么它可能会对你有用。我不打算将UCS-2模式重新添加到RE2源代码中,但我只是发布了删除它的更改的diff。您应该能够逆转本地副本中的差异,以获得UCS-2的支持。文件在Mercurial存储库的根目录中是ucs2.diff。
好好享受吧。
链接到代码:http://code.google.com/p/re2/source/list
发布于 2012-02-09 11:25:44
你问过拉斯·考克斯他对你问题的答案有什么看法吗?我敢打赌这是太长的时间来考虑。
我真的认为你高估了从丑陋的UTF-16转换成普通的UTF-8的成本,低估了对一个高度调优的库进行重新编码的成本。
就像我们其他人一样咬紧牙关使用UTF-8。
我自己也是RE2的忠实粉丝,但我从未想过要在UTF-16上使用它。不是我的世界的一部分。就像任何其他遗留编码一样,我们在UTF-16中获得的任何内容都会立即升级到UTF-8,以便整个工具链可以使用它,因为我们运行的是纯-UTF 8工具链。
也许你住在另一个世界?
https://stackoverflow.com/questions/9171812
复制相似问题