【发布时间】:2014-12-10 03:41:45
【问题描述】:
在 Perl 中,我如何获得在正则表达式中匹配的捕获表达式?
$s = 'aaazzz';
$s =~ s/(a+)|(b+)|(c+)/.../;
$s =~ s/(?<one>a+)|(?<two>b+)|(?<three>c+)/.../;
我指的是表达式(例如a+),而不是字符串aaa。
我需要编号和命名捕获的表达式。
【问题讨论】:
-
我认为没有办法自动执行此操作。你想做什么需要这个?
-
我有一个带有许多管道的正则表达式。根据正则表达式匹配,我想在之后调用不同的 subs。
-
你可以通过匹配是否在
$1、$2、$3等来判断匹配的部分。 -
我知道如何确定哪个捕获匹配(定义 $1),但要获得表达式,我必须分析整个正则表达式( (a+)|(b+)|(c+) )。是不是有一个特殊的变量来存储最后匹配的表达式?
-
为什么需要获取表达式?你不知道你在正则表达式中放了什么吗?如果
defined $1则表达式为a+,如果defined $2则表达式为b+,以此类推
标签: regex perl matching capture