2009-05-02 65 views

回答

8

PCRE为C中的事实上的标准regex库(和它也可以在C++)。

(什么你的编辑器做的,我不知道使用像PCRE或任何其他人的建议库不改变C的语法 - 。您的正则表达式定义将始终在字符串中举行)

0

我不认为你可以在不使用一些第三方库的情况下在C++中执行正则表达式。 Qt和Gtk +/Gtkmm都带有这些。 Visual C++ 2008也带有这种功能。

1

Boost.Xpressive允许你写regexs作为字符串(如在Boost.Regex)或静态地表达模板。它类似于语法的Boost.Spirit

例如,这两个是相同的:

sregex rex1 = sregex::compile("(\\w+) (\\w+)!"); //normal string based way 
sregex rex2 = (s1= +_w) >> ' ' >> (s2= +_w) >> '!'; //expression template way 
1

只是为了完整性,Qt有一个QRegExp可以做正则表达式匹配。
这通常是很好的,如果你需要一个小的正则表达式在你的盛大Qt应用程序中的远程功能。对于任何更严重的事情,PCRE绝对是一条路。

1

不,C++没有,也不会使用某些语言中使用的/.../语法的正则表达式。你的编辑错了。

正如所有其他答案显示,用于C++的正则表达式库确实存在(其中一个计划包含在C++ 0x中),但它们处理的字符串由“,而不是斜线”分隔,所以它们不是原因你的编辑器的行为

0

如果你在Visual Studio中,你可以使用Greta(search greta regex),但是我认为它比boost要慢一些,但它确实很容易使用。

1

如果您使用visual studio并且可移植性不是主要问题,那么您可以使用名为CAtlRegExp的可爱ATL工具快速获得结果(无需下载,无需安装)。它包含完整有效的RegEx解析和匹配(online sample)。虽然没有比较它的性能和BOOST。

相关问题