可以?如果是,我在哪里可以获得它的文档......如果不是,那么哪个是最好的选择?
9 回答
C++11 现在终于有了一个标准的正则表达式库——std::regex。
如果您无权访问 C++11 实现,一个不错的选择可能是boost regex。它不完全等同于 std::regex (例如,“empty()”方法不在 std::regex 中),但它仍然是 C++ 的一个非常成熟的正则表达式实现。
在类 UNIX 系统下,您可以使用POSIX 正则表达式函数。
Microsoft Visual C++ 2008 Feature Pack 1(现在整合到 Visual Studio 2008 Service Pack 1 中)包含“官方”TR1 reg ex 类型的实现。把自己打昏 :-)
检查boost 正则表达式库。它应该成为 C++0x 标准的一部分。
如果按照标准,您的意思是与编译器捆绑在一起,那么不是。但是大多数捆绑正则表达式扩展的其他语言都使用非常标准的c
实现。例如PCRE - Perl 兼容的正则表达式和 C 库支持 POSIX 正则表达式(参见手册页)。
正则表达式是 C++ 扩展 TR1 的一部分。Dinkumware、visual studio 和其他公司已经实现了这一点。看
来自 Trolltech 的Qt也有一个我觉得很容易使用的正则表达式实现。但是,如果您不打算将 Qt 用于其他任何用途,我会使用 Boost.Regex,因为您可能也可以将 Boost 用于其他目的。
标准 ISO/IEC 14882:2011 Programming Language C++ 将正则表达式类描述为 C++ 库的一部分,该库深受成熟的 Boost 库的影响。
奇怪的是,截至 2013 年 1 月,编译器对该标准的遵守情况仍然参差不齐,例如 GNU 编译器套件的流行 C++ 编译器不支持/遵守该标准的这一部分。
出于这个原因,最好在此时使用 Boost,直到编译器支持达到合规性。
+1 for PCRE - Perl Compatible Regular Expression,我记得我也使用过 Mircosoft 的 GRETA。