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