带有Unicode属性支持的Qt/C++正则表达式库

3
我正在使用C++将一个应用程序从.Net框架转换为Qt。该应用程序广泛使用正则表达式unicode属性,即\p{L}、\p{M}等。我刚刚发现QRegExp类缺乏对这些属性的支持,以及其他一些功能(如向后查找等)。
有人能推荐一个C++正则表达式库吗,它:
  • 支持Unicode属性
  • 在其他方面也支持Unicode(即\w匹配不止ASCII单词字符)
  • 作为额外奖励,支持向后查找。
请不要指向维基百科文章;我不信任它。那篇文章说QRegExp支持Unicode属性。除非我真的做错了什么,否则它并不支持。我正在寻找实际在项目中使用正则表达式库处理Unicode属性的人。

你测试了所有的PatternSyntax吗?记住默认的QRegExp :: PatternSyntax是QRegExp :: RegExp,尝试使用QRegExp :: RegExp2进行测试,它是正常rx的扩展版本。 - Kamil Klimek
是的,我尝试了RegExp和RegExp2两种方法,但没有任何区别。 - Dave Mateer
2个回答

4

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

ICU是一个成熟、广泛使用的C/C++和Java库集,为软件应用程序提供Unicode和全球化支持。
  • 以非限制性开源许可证发布
  • ...
  • 正则表达式: ICU的正则表达式完全支持Unicode,并提供极具竞争力的性能。

它还兼容于Boost,请参阅他们相关的声明


太棒了,正是我要找的。运行得很好,尽管在OS X上编译和链接起来还是有一些麻烦!谢谢! - Dave Mateer
@Dave 如果你遇到了问题,请提交一个错误报告。我主要在OSX上进行开发,ICU已经内置在OSX中了。 - Steven R. Loomis

0

你完全可以使用 PCRE(http://www.pcre.org/),但是在 QString 和 const char * 之间来回转换可能会影响性能或者带来麻烦。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接