С помощью 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
: модифицированный Грамматика регулярных выражений ECMAScript;
basic
: основной POSIX грамматика регулярных выражений;
extended
: расширенный POSIX грамматика регулярных выражений;
awk
: Грамматика регулярного выражения, используемая AWK утилита в
POSIX;
grep
: Грамматика регулярного выражения, используемая утилитой grep в
POSIX. По сути, это то же самое, что и основной вариант с
добавление новой строки ‘\ n’ в качестве разделителя переменных;
egrep
: Грамматика регулярного выражения, используемая утилитой grep,
с опцией -E в POSIX. Это фактически так же, как
расширенная опция с добавлением новой строки ‘\ n’ в качестве альтернативы
разделитель в дополнение к ‘|’.
К сожалению, никто из них не поддерживает эту функцию.
Больше информации о cppreference.com.
Других решений пока нет …