标准库中的任何正则表达式语法是否支持 (?(DEFINE) 用于子模式引用?

Do any of the regex syntaxes in the standard library support (?(DEFINE) for subpattern referencing?

使用 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> 是否支持此功能,或者这是否真的是 PCRE 特定的功能?

我正在使用 C++11。

<regex> 库支持以下语法:

  • ECMAScriptModifiedECMAScript正则表达式文法;

  • basicbasic POSIX正则表达式文法;

  • extendedextended POSIX正则表达式文法;

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

  • grep:grep 实用程序使用的正则表达式语法 POSIX。这实际上与基本选项相同 添加换行符 '\n' 作为交替分隔符;

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

遗憾的是,其中 none 个支持此功能。

有关 cppreference.com 的更多信息。