RE2和UTF16(或UCS-2)

时间:2012-02-07 06:15:36

标签: regex unicode utf-16 re2

RE2很棒。 快速和确定性。

但是,它仅支持UTF8。 我的字符串本身就是UTF16 ,来回转换会破坏性能。

在RE2中实施本机 UTF16 功能有多难?

在RE2中实施原生 UCS-2 功能有多难? (这应该更容易)

即。普通程序员需要多少小时才能完成这项任务。

这让我困扰了几个星期,所以我想我会问!

2 个答案:

答案 0 :(得分:5)

RE2的创建者Russ Cox非常友好地发布了UCS-2支持补丁。但是,UCS-2不支持某些断言。 Russ的回复是逐字发布的:

  

您好。在我开源之前RE2有一个UCS-2模式,但它不能   支持^,$和\ b之类的断言,这限制了它的实用性。如果   你不需要那些操作员,那么它可能适合你。   我不打算重新添加UCS-2模式到RE2源,但我做了   发布删除它的更改的差异。你应该可以   反转本地副本中的差异以获得UCS-2支持。   该文件是Mercurial存储库根目录中的ucs2.diff。

     

享受。

代码链接:http://code.google.com/p/re2/source/list

答案 1 :(得分:1)

你有没有问过Russ Cox他对你问题答案的看法?我敢打赌,考虑的时间太长了。

我真的认为你高估了从丑陋的UTF-16转换为普通UTF-8的成本,并低估了重新编码高度调整的库的成本。

咬紧牙关,像我们其他人一样使用UTF-8。

我自己也是RE2的忠实粉丝,但我从未想过要在UTF-16上使用它。 UTF-16不属于我的世界。就像任何其他遗留编码一样,我们在UTF-16中获得的任何东西都会立即升级到UTF-8,这样整个工具链就可以使用它,因为我们运行纯UTF8工具链。

也许你生活在对立的世界?