2010-05-12 32 views
3

正則表達式庫我從.NET框架轉換應用中使用C++來QT。該應用程序使用了大量regular expression unicode properties,即\p{L}, \p{M},等我剛剛發現QRegExp類負責缺少這除其他事項外(lookbehinds等)QT/C++使用Unicode屬性支持

誰能推薦一個C++的正則表達式庫支持:

  • 支持Unicode性能
  • 是Unicode感知在其他方面(即\ W比ASCII文字字符以上)
  • 作爲獎勵,支持lookbehinds。

請不要將我指向維基百科的文章;我不相信它。那篇文章說QRegExp支持unicode屬性。除非我真的做錯了,事實並非如此。我正在尋找一個實際使用unicode屬性的項目中的正則表達式庫。

+0

你測試過所有的PatternSyntax嗎?記住默認的QRegExp :: PatternSyntax是QRegExp :: RegExp,用QRegExp :: RegExp2試試它,它是正常rx的擴展版本。 – 2010-05-14 13:44:28

+0

是的,我試了RegExp和RegExp2;沒有不同。 – 2010-05-14 14:48:10

回答

4

http://site.icu-project.org/

ICU是一個成熟的,廣泛使用的一組 C/C++和Java庫提供 軟件應用 Unicode和全球化支持。

  • 下一個非限制性開源許可
  • 發佈...
  • 正則表達式: ICU的正則表達式完全支持Unicode 同時提供極具競爭力的 性能。

這也是Boost兼容,見their statement in this regard

+0

優秀;就是我在找的東西。雖然我有一段時間讓它在OS X上編譯和鏈接,但效果很好!謝謝! – 2010-05-18 20:29:14

+0

@Dave如果您遇到問題請提交錯誤。我在OSX上做我的主要開發,ICU內置到OSX中。 – 2010-05-19 04:32:44

0

應該沒有什麼能夠阻止你使用PCRE(http://www.pcre.org/),儘管從QStrings到const char * s的來回轉換可能是一個疼痛/性能問題。