在C ++中有一个使用模式匹配(使用正则表达式)的函数吗?

时间:2008-11-30 22:34:27

标签: c++ regex string

有一种简单的C ++方法可以在字符串上使用模式匹配吗?代码听起来应该是这样的:

if (regexpcmp("l?nole*[0-9]", "linoleum1")) {
  //we have a match!
} else {
   //no match 
}

4 个答案:

答案 0 :(得分:11)

您是否已查看Boost.Regex

const boost::regex e("l?nole*[0-9]");
if (regex_match("linoleum1", e)) {
  //we have a match!
} else {
  //no match 
}

答案 1 :(得分:3)

不是核心语言。使用Boost.Regex或像pcre这样的外部库。在unix环境中,您几乎肯定可以访问BSD正则表达式工具(regcompregerrorregexecregfree),这些工具是c-like而不是c ++-like但是要做好。

答案 2 :(得分:3)

采取boost.regex朋友。如果你不被允许使用boost(遗憾的是,仍有公司这样做),你可以查看pcrecpp,这是由谷歌为着名的PCRE库开发的C ++绑定。

答案 3 :(得分:0)

如果您使用最常用编译器的最新版本,则可以在TR1命名空间中使用标准正则表达式库(基于boost :: regex):std :: tr1 :: regex。