标准库中的任何正则表达式语法是否支持 (?(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>
库支持以下语法:
ECMAScript
:ModifiedECMAScript正则表达式文法;
basic
:basic POSIX正则表达式文法;
extended
:extended POSIX正则表达式文法;
awk
:awk实用程序使用的正则表达式语法
POSIX;
grep
:grep 实用程序使用的正则表达式语法
POSIX。这实际上与基本选项相同
添加换行符 '\n' 作为交替分隔符;
egrep
:grep 实用程序使用的正则表达式语法,
使用 -E 选项,在 POSIX 中。这实际上与
扩展选项,添加换行符 '\n' 作为替代
除“|”之外的分隔符。
遗憾的是,其中 none 个支持此功能。
有关 cppreference.com 的更多信息。
使用 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>
库支持以下语法:
ECMAScript
:ModifiedECMAScript正则表达式文法;basic
:basic POSIX正则表达式文法;extended
:extended POSIX正则表达式文法;awk
:awk实用程序使用的正则表达式语法 POSIX;grep
:grep 实用程序使用的正则表达式语法 POSIX。这实际上与基本选项相同 添加换行符 '\n' 作为交替分隔符;egrep
:grep 实用程序使用的正则表达式语法, 使用 -E 选项,在 POSIX 中。这实际上与 扩展选项,添加换行符 '\n' 作为替代 除“|”之外的分隔符。
遗憾的是,其中 none 个支持此功能。
有关 cppreference.com 的更多信息。