有一种简单的C ++方法可以在字符串上使用模式匹配吗?代码听起来应该是这样的:
if (regexpcmp("l?nole*[0-9]", "linoleum1")) {
//we have a match!
} else {
//no match
}
答案 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正则表达式工具(regcomp
,regerror
,regexec
,regfree
),这些工具是c-like而不是c ++-like但是要做好。
答案 2 :(得分:3)
采取boost.regex朋友。如果你不被允许使用boost(遗憾的是,仍有公司这样做),你可以查看pcrecpp
,这是由谷歌为着名的PCRE库开发的C ++绑定。
答案 3 :(得分:0)
如果您使用最常用编译器的最新版本,则可以在TR1命名空间中使用标准正则表达式库(基于boost :: regex):std :: tr1 :: regex。