代码之家  ›  专栏  ›  技术社区  ›  Emilio

在C++中有使用模式匹配(使用正则表达式)的功能吗?

  •  2
  • Emilio  · 技术社区  · 16 年前

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

    if (regexpcmp("l?nole*[0-9]", "linoleum1")) {
      //we have a match!
    } else {
       //no match 
    }
    
    4 回复  |  直到 16 年前
        1
  •  3
  •   dmckee --- ex-moderator kitten    16 年前

    不是核心语言。使用boost.regex或类似的外部库 pcre . 在UNIX环境中,您几乎肯定可以访问BSD正则表达式工具。( regcomp , regerror , regexec , regfree 它是C类的,而不是C++的,但是可以工作。

        2
  •  11
  •   Reunanen    16 年前

    你已经看过了吗 Boost.Regex ?

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

    带上Boost.Regex朋友。如果你不被允许使用Boost(遗憾的是,仍然有公司这样做),你可以调查 pcrecpp ,这是谷歌为著名的C++绑定而开发的。 PCRE 图书馆。

        4
  •  0
  •   Klaim    16 年前

    如果使用最常用编译器的最新版本:std::tr1::regex,则在tr1命名空间中提供标准regex库(基于boost::regex)。