2012-02-07 37 views
4

RE2是很大的。 快速和確定性。RE2和UTF16(或UCS-2)

但是,它僅支持UTF8。 我的字符串本身是UTF16,並且來回轉換會導致性能下降。

在RE2中實現原生UTF16能力有多困難?

多大的困難會是實現在本地RE2 UCS-2能力? (這應該更容易)

即一個普通程序員需要多少小時才能做到這一點。

這一直困擾我幾個星期,所以我想我會問!

+1

是您唯一真正的問題是 「如何困難/多久」?這很難回答,並且很大程度上取決於您稱之爲「常規程序員」的定義。 :) – deceze 2012-02-07 06:56:54

+0

是的,我知道。如何'需要多長時間?'? – MustafaM 2012-02-07 08:05:46

回答

5

RE2的創建者Russ Cox很善良地發佈UCS-2支持的補丁。但是,某些斷言不適用於UCS-2。從拉斯回覆逐字:

嗨。在我開源之前,RE2有一個UCS-2模式,但它不支持像^,$和\ b這樣的斷言,這限制了它的效用。如果 你不需要那些操作員,那麼它可能適合你。 我不打算UCS-2模式重新添加到RE2的來源,但我確實只是 發佈爲刪除它的變化的差異。您應該能夠 在本地副本中反轉diff以獲得UCS-2支持。 該文件位於Mercurial存儲庫的根目錄中的ucs2.diff。

享受。

鏈接代碼:http://code.google.com/p/re2/source/list

1

你問拉斯考克斯他有什麼看法可能是對回答你的問題?我敢打賭,設想它太長了。

我真的認爲你高估從醜陋的UTF-16轉換爲正常的UTF-8的成本,並低估了重新編碼高度調諧的庫的成本。

就硬着頭皮使用UTF-8次一樣我們休息。

我自己是一個很大的RE2粉絲,但是我從來沒有想過要在UTF-16上使用它。 UTF-16不是我的世界的一部分。就像任何其他傳統編碼一樣,我們在UTF-16中獲得的任何內容都會立即升級到UTF-8,以便整個工具鏈可以使用它,因爲我們運行純UTF8工具鏈。

也許你住在對面的世界?

+0

嗨,事實上,我做到了,他很友善地在官方回購中發佈了UCS-2代碼!是的,我的一部分生活在Windows世界。見答案。 – MustafaM 2012-02-10 02:47:55