Использовать шаблоны-шаблоны внутри Regex? - PullRequest
0 голосов
/ 30 августа 2011

Мне интересно, возможно ли использовать что-то вроде пользовательских шаблонов шаблонов внутри регулярных выражений.Простой пример:

# this regex
^1xyz2xyz3xyz4$
# matches this string
"1xyz2xyz3xyz4"

Как видно, я должен использовать «xyz» три раза, поэтому мой вопрос: могу ли я определить шаблон один раз для «xyz», а затем использовать имяостальная часть регулярного выражения?

1 Ответ

2 голосов
/ 30 августа 2011

В Perl и PCRE вы можете использовать блоки (?(DEFINE)...) для объявления именованных групп, а затем вызывать их как именованные регулярные выражения:

my $re = qr{
    (?(DEFINE) (?<tmp> xyz )  )
    ^ 1 (?&tmp) 2 (?&tmp) 3 (?&tmp) 4  $
}x;

print "1xyz2xyz3xyz4" =~ $re;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...