2010-05-12 63 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的来回转换可能是一个疼痛/性能问题。