c++标准库中没有关于正则匹配字符串的函数么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++标准库中没有关于正则匹配字符串的函数么相关的知识,希望对你有一定的参考价值。

C++ stl 中的<regex>就是正则表达式

其中函数的用法可以百度一下。。我还没用过这个
参考技术A 有的,搜索c++11正则表达式即可

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

【中文标题】在 C++ 中有一个使用模式匹配(使用正则表达式)的函数吗?【英文标题】:There is a function to use pattern matching (using regular expressions) in C++? 【发布时间】:2008-11-30 22:34:26 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

你已经看过Boost.Regex了吗?

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

【讨论】:

【参考方案2】:

不在核心语言中。使用 Boost.Regex 或像 pcre 这样的外部库。在 unix 环境中,您几乎可以肯定可以访问 BSD 正则表达式工具(regcompregerrorregexecregfree),它们是类 c 而不是类 c++,但确实有效。

【讨论】:

我在 *nix 环境中,所以我将使用 BSD 正则表达式工具,如本页底部的示例 opengroup.org/onlinepubs/000095399/functions/regcomp.html【参考方案3】:

以 boost.regex 为好友。如果不允许你使用 boost(遗憾的是,仍然有公司这样做),你可以查看 pcrecpp,这是 google 为著名的 PCRE 库开发的 C++ 绑定。

【讨论】:

哈哈。如果您不允许使用 3rd 方库,那么您只需使用 3rd 方库 :-) 这样的公司很愚蠢。 什么,比如谷歌?其发布的编码标准仅允许使用 Boost 中的一些特定内容。他们一定像亿万富翁一样愚蠢;-)【参考方案4】:

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

【讨论】:

以上是关于c++标准库中没有关于正则匹配字符串的函数么的主要内容,如果未能解决你的问题,请参考以下文章

关于C++中string类型变量的赋值

为啥 C++ 标准库中没有线程池?

为啥标准 C++ 库中没有“int pow(int base, int exponent)”?

C++ 指向具有匹配函数签名的任何类的成员函数的指针

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

C++ Primer 5th笔记(chap 17 标准库特殊设施)ECMAScript正则表达式