Bir dosya satırında, herhangi bir regex kümesiyle eşleşip eşleşmediğini görmek istiyorum. BöylePerl regex'in hangi kısmının bir dizeyle eşleştirildiğini nasıl bilebilirim?
şey:
my @regs = (qr/a/, qr/b/, qr/c/);
foreach my $line (<ARGV>) {
foreach my $reg (@regs) {
if ($line =~ /$reg/) {
printf("matched %s\n", $reg);
}
}
}
ama bu yavaş olabilir.
Bu regex derleyicisinin yardımcı olabileceği gibi görünüyor. Böyle bir optimizasyon var mı:
my $master_reg = join("|", @regs); # this is wrong syntax. what's the right way?
foreach my $line (<ARGV>) {
$line =~ /$master_reg/;
my $matched = special_function();
printf("matched the %sth reg: %s\n", $matched, $regs[$matched]
}
} 'special_function' regex kısmı denk getirilmiştir bana özel sosu olan
.