代码之家  ›  专栏  ›  技术社区  ›  Decent Dabbler

标准库中的regex语法是否支持(?(define)对于子模式引用?

  •  0
  • Decent Dabbler  · 技术社区  · 7 年前

    使用PCRE,您可以定义子模式,稍后可以引用。下面是一个简单的例子:

    # start delimiter
    /
    
    # define non-matching subpatterns, is this supported by <regex>?
    (?(DEFINE)
      (?<alpha> [A-Za-z])
      (?<num> [0-9])
    )
    
    # actual pattern, referencing subpattern definitions
    ^ (?&alpha){2} (?&num){2} $
    
    #end delimiter and extended flag to ignore whitespace in pattern
    /x
    

    执行标准库中的任何regex语法 <regex> 支持这个,或者这真的是一个特定于PCRE的特性?

    我正在使用C++ 11。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Not a real meerkat    7 年前

    这个 <regex> 库支持以下语法:

    • ECMAScript :的 Modified ecmascript正则表达式语法;

    • basic :的 basic POSIX 正则表达式语法;

    • extended : extended POSIX 正则表达式语法;

    • awk :使用的正则表达式语法 awk 中的实用程序 POSIX;

    • grep :grep实用程序在中使用的正则表达式语法 位置。这实际上与 添加换行符'\n'作为交替分隔符;

    • egrep :grep实用程序使用的正则表达式语法, 使用-e选项,在posix中。这实际上与 添加换行符'\n'作为替代项的扩展选项 添加到“”的分隔符。

    不幸的是,他们都不支持这个功能。

    有关的详细信息 cppreference.com .