C或C++有标准的正则表达式库吗?

19

是否支持?如果是,我应该在哪里获取相关文档... 如果不支持,那么有什么更好的替代方案吗?


近似重复问题:https://dev59.com/PXVC5IYBdhLWcg3wykej,http://stackoverflow.com/questions/923500和https://dev59.com/JUfRa4cB1Zd3GeqP8269。 - Peter Mortensen
1
http://stackoverflow.com/questions/329517/there-is-a-function-to-use-pattern-matching-using-regular-expressions-in-c - dmckee --- ex-moderator kitten
1
顺便说一句:你可以通过搜索以下链接更快更轻松地获得大量信息:http://stackoverflow.com/search?q=c+c%2B%2B+regex+standard - dmckee --- ex-moderator kitten
9个回答

31

这个答案已经过时了,截至2012年,答案是肯定的,C++现在有一个标准的正则表达式库,由C++11强制规定,在头文件“regex”下。 - Anne Quinn
@Clairvoire - 我已决定编辑/更新我的答案以反映自2009年以来的变化,感谢您指出这个过时的答案。 - Joris Timmermans
不同之处还在于C++标准不支持命名子组,即对正则表达式的部分进行命名,以便稍后可以通过名称获取它们。 - user3111311

8

6

微软Visual C++ 2008功能包1(现在已整合到Visual Studio 2008服务包1中)包含了“官方”的TR1正则表达式类型的实现。尽情使用吧 :-)


5

3

如果你所说的“标准”是指编译器捆绑的话,那就不是。但是大多数其他捆绑正则表达式扩展的语言使用的都是相当标准的 c 实现。例如 PCRE-Perl兼容正则表达式和C库都支持POSIX正则表达式(请参见man页)。


2

1

标准ISO / IEC 14882:2011编程语言C ++将regex类描述为C ++库的一部分,该库受成熟的Boost库的影响。

有趣的是,截至2013年1月,编译器对此标准的遵循仍然不完全,例如GNU编译套件的流行C ++编译器不支持/遵循此标准的这一部分。

因此,在编译器支持达到合规性之前,最好使用Boost。


1

Qt,来自Trolltech的库,也有一个正则表达式实现,我发现非常容易使用。然而,如果您不打算在其他方面使用Qt,我建议使用Boost.Regex,因为您可能也会在其他方面使用Boost。


0

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