我想知道是否可以在正则表达式中使用自定义模板模板之类的东西。一个简单的例子:
# this regex
^1xyz2xyz3xyz4$
# matches this string
"1xyz2xyz3xyz4"
有人可以看到,我必须使用“xyz”三次,所以我的问题是:我可以为“xyz”定义一次模板,然后在正则表达式的其余部分使用模板名称吗?
答案 0 :(得分:2)
在Perl和PCRE中,您可以使用(?(DEFINE)...)
块来声明命名组,然后将它们称为名为regexes:
my $re = qr{
(?(DEFINE) (?<tmp> xyz ) )
^ 1 (?&tmp) 2 (?&tmp) 3 (?&tmp) 4 $
}x;
print "1xyz2xyz3xyz4" =~ $re;