标准库中的任何正则表达式语法都支持(?(DEFINE)进行子模式引用吗?

时间:2018-08-14 16:41:05

标签: c++ regex c++11 subroutine

使用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。

1 个答案:

答案 0 :(得分:2)

<regex>库支持以下语法:

  • ECMAScriptModified ECMAScript正则表达式语法;

  • basicbasic POSIX正则表达式语法;

  • extendedextended POSIX正则表达式语法;

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

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

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

不幸的是,它们都不支持此功能。

有关cppreference.com的更多信息。