【问题标题】:RE2 and UTF16 (or UCS-2)RE2 和 UTF16(或 UCS-2)
【发布时间】:2012-02-28 14:50:49
【问题描述】:

RE2 很棒。 快速和确定性。

但是,它仅支持 UTF8。 我的字符串是原生 UTF16,来回转换会降低性能。

在 RE2 中实现原生 UTF16 功能有多难?

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

即一个普通的程序员需要多少小时才能做到这一点。

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

【问题讨论】:

  • 您唯一真正的问题是“有多难/多长时间”?这很难回答,很大程度上取决于你所谓的“普通程序员”的定义。 :)
  • 是的,我知道。 “你需要多长时间”怎么样?

标签: regex unicode utf-16 re2


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    我真的认为你高估了从丑陋的 UTF-16 转换为普通 UTF-8 的成本,而低估了重新编码一个高度优化的库的成本。

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

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

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

    【讨论】:

    • 嗨,事实上我做到了,他很友好地在官方仓库中发布了 UCS-2 代码!是的,我的一部分生活在 Windows 世界中。见答案。
    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 2017-08-05
    • 2011-10-21
    • 2011-11-19
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多