GCC正则expression式

如何在GNU G ++ / GCC中使用正则expression式来匹配,search和replace子串? 例如,你能提供关于regex_t和其他的任何教程吗?

谷歌search了一个多小时,给了我没有可以理解的教程或手册。

我强烈建议使用Boost C ++正则表达式库。 如果您正在开发严重的C ++,Boost绝对是您必须考虑的事情。

该库支持Perl和POSIX正则表达式语法。 我个人更喜欢Perl的正则表达式,因为我相信他们更直观,更容易正确。

http://www.boost.org/doc/libs/1_46_0/libs/regex/doc/html/boost_regex/syntax.html

但是如果你对这个好的图书馆没有任何的了解,我建议你从这里开始:

http://www.boost.org/doc/libs/1_46_0/libs/regex/doc/html/index.html

手册应该很容易找到: POSIX正则表达式函数 。 如果你不明白这一点,我真的会建议你尝试刷新你的C和C ++技能。

请注意,一旦你有一个匹配,实际上替换一个子字符串是一个完全不同的问题,一个正则表达式函数不会帮助你。

我在这里找到了答案:

 #include <regex.h> #include <stdio.h> int main() { int r; regex_t reg; if (r = regcomp(&reg, "\\b[AZ]\\w*\\b", REG_NOSUB | REG_EXTENDED)) { char errbuf[1024]; regerror(r, &reg, errbuf, sizeof(errbuf)); printf("error: %s\n", errbuf); return 1; } char* argv[] = { "Moo", "foo", "OlOlo", "ZaooZA~!" }; for (int i = 0; i < sizeof(argv) / sizeof(char*); i++) { if (regexec(&reg, argv[i], 0, NULL, 0) == REG_NOMATCH) continue; printf("matched: %s\n", argv[i]); } return 0; } 

上面的代码将提供给我们

 matched: Moo matched: OlOlo matched: ZaooZA~!