C++ 标准库中的正则表达式语法是否支持子模式引用(?(定义)?

C++ 标准库中的正则表达式语法是否支持子模式引用(?(定义)?,c++,regex,c++11,subroutine,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 ^ (?&

使用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
#开始分隔符
/
#定义不匹配的子模式,是否受支持?
(?(定义)
(?[A-Za-z])
(? [0-9])
)
#实际模式,引用子模式定义
^(?&alpha){2}(?&num){2}$
#结束分隔符和扩展标志以忽略模式中的空白
/x
标准库
中的正则表达式语法是否支持这一点,或者这真的是PCRE特有的特性

我正在使用C++11。

库支持以下语法:

  • ECMAScript
    :ECMAScript正则表达式语法

  • basic
    :正则表达式语法

  • extended
    :正则表达式语法

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

  • grep
    :中grep实用程序使用的正则表达式语法 这实际上与 添加换行符“\n”作为替换分隔符

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

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

有关。

的详细信息
库支持以下语法:

  • ECMAScript
    :ECMAScript正则表达式语法

  • basic
    :正则表达式语法

  • extended
    :正则表达式语法

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

  • grep
    :中grep实用程序使用的正则表达式语法 这实际上与 添加换行符“\n”作为替换分隔符

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

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


有关的详细信息。

您可以在此处看到所有受支持的语法:@NathanOliver谢谢。我已经看到了这一点,但我对所有这些语法的了解还不够,无法知道它们是否支持它。到目前为止,一次相当彻底的搜索也没有结果。这可能是一个很好的指标。但是,从PHP背景来看,由于PHP支持PCRE,还没有发现oesn在自己的文档中也没有提到这个语法,我想这可能是一个功能,它在某种程度上得到了支持,但是undocumented.PHP在PCRE上没有一个可靠的文档,我认为社区也不应该使用它。只需知道一种语言或环境中使用了哪种正则表达式就足够了。你可以看到所有的支持的语法在这里:@NathanOliver谢谢。我已经看到了这一点,但我对所有这些语法的了解还不够,不知道它们是否支持它。到目前为止,一个相当彻底的搜索也没有得到任何结果。这可能是一个很好的指标。但是,来自PHP背景,由于PHP支持PCRE,所以在它自己的文档中没有提到这个语法或者,我认为这可能是一个功能,它在某种程度上得到了支持,但是undocumented.PHP没有关于PCRE的可靠文档,我认为社区也不应该对它进行研究。只需知道在一种语言或环境中使用了哪种正则表达式就足够了。