RE2很棒。 快速和确定性。
但是,它仅支持UTF8。 我的字符串本身就是UTF16 ,来回转换会破坏性能。
在RE2中实施本机 UTF16 功能有多难?
在RE2中实施原生 UCS-2 功能有多难? (这应该更容易)
即。普通程序员需要多少小时才能完成这项任务。
这让我困扰了几个星期,所以我想我会问!
答案 0 :(得分:5)
RE2的创建者Russ Cox非常友好地发布了UCS-2支持补丁。但是,UCS-2不支持某些断言。 Russ的回复是逐字发布的:
您好。在我开源之前RE2有一个UCS-2模式,但它不能 支持^,$和\ b之类的断言,这限制了它的实用性。如果 你不需要那些操作员,那么它可能适合你。 我不打算重新添加UCS-2模式到RE2源,但我做了 发布删除它的更改的差异。你应该可以 反转本地副本中的差异以获得UCS-2支持。 该文件是Mercurial存储库根目录中的ucs2.diff。
享受。
答案 1 :(得分:1)
你有没有问过Russ Cox他对你问题答案的看法?我敢打赌,考虑的时间太长了。
我真的认为你高估了从丑陋的UTF-16转换为普通UTF-8的成本,并低估了重新编码高度调整的库的成本。
咬紧牙关,像我们其他人一样使用UTF-8。
我自己也是RE2的忠实粉丝,但我从未想过要在UTF-16上使用它。 UTF-16不属于我的世界。就像任何其他遗留编码一样,我们在UTF-16中获得的任何东西都会立即升级到UTF-8,这样整个工具链就可以使用它,因为我们运行纯UTF8工具链。
也许你生活在对立的世界?