在Regex中使用Pattern-Templates?

时间:2011-08-30 06:50:06

标签: regex templates

我想知道是否可以在正则表达式中使用自定义模板模板之类的东西。一个简单的例子:

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

有人可以看到,我必须使用“xyz”三次,所以我的问题是:我可以为“xyz”定义一次模板,然后在正则表达式的其余部分使用模板名称吗?

1 个答案:

答案 0 :(得分:2)

在Perl和PCRE中,您可以使用(?(DEFINE)...)块来声明命名组,然后将它们称为名为regexes:

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

print "1xyz2xyz3xyz4" =~ $re;