答案 0 :(得分:31)
C ++ 11现在终于有了standard regex library - std :: regex。
如果您无法访问C ++ 11实现,那么一个好的替代方案可能是boost regex。它并不完全等同于std :: regex(例如the "empty()" method is not in the std::regex),但它是一个非常成熟的C ++正则表达式实现。
答案 1 :(得分:7)
在类UNIX系统下,您可以使用POSIX regex functions。
答案 2 :(得分:6)
Microsoft Visual C ++ 2008 Feature Pack 1(现已加入Visual Studio 2008 Service Pack 1)包含“官方”TR1 reg ex类型的实现。把自己弄出来: - )
答案 3 :(得分:5)
检查boost regex库。它应该成为C ++ 0x标准的一部分。
答案 4 :(得分:3)
如果通过标准表示与编译器捆绑在一起,那么就不是。但捆绑正则表达式扩展的大多数其他语言使用非常标准的c
实现。例如。 PCRE - Perl Compatible Regular Expression和C库具有POSIX正则表达式支持(请参阅man page)。
答案 5 :(得分:2)
正则表达式是C ++扩展TR1的一部分。 Dinkumware,visual studio和其他人已经实现了这一点。 见
答案 6 :(得分:1)
Qt也有一个我觉得很容易使用的正则表达式实现。但是,如果您不打算将Qt用于其他任何事情,我会使用Boost.Regex,因为您可能还可以将Boost用于其他目的。
答案 7 :(得分:1)
标准ISO / IEC 14882:2011编程语言C ++描述了一个正则表达式类作为C ++库的一部分,它深受成熟的Boost库的影响。
奇怪的是,截至2013年1月,编制者对此标准的遵守情况仍然不稳定,例如: GNU编译器套件的流行C ++编译器不支持/遵守标准的这一部分。
出于这个原因,最好在此时使用Boost,直到编译器支持达到合规性。
答案 8 :(得分:0)