正则表达式 – 如何在Perl中迭代正则表达式匹配变量?

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何在Perl中迭代正则表达式匹配变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个很长的正则表达式,可以将文本文件解析为各种匹配变量.

对于稳健性,匹配变量可能包含空格.我想通过迭代匹配变量以系统的方式删除空格.

例如,我有匹配变量$2到$14,包含一些空格.

我可以:

my @columns = my ($serNum,$helixID,$initResName,$initChainID,$initSeqNum,$initIcode,$endResName,$endChainID,$endSeqNum,$endICode,$helixClass,$comment,$length) = 
($2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14);

### Remove whitespace                       
foreach my $element (0..$#columns) {
    $columns[$element] =~ s/^\s+//;
    $columns[$element] =~ s/\s+$//;
}

但这只会删除@column中元素中的空格,并保留正确命名的标量,$serNum,$helixID等.

有没有办法在将每个匹配变量复制到更好命名的标量之前删除每个匹配变量中的空白区域,或者有没有办法迭代这些命名良好的标量本身并从那里删除空格?

我认为可能有一些方法可以用引用来做到这一点.

解决方法

您可以先将匹配变量存储在数组中,然后使用map删除空格:

my @matches = ($2,...);

my ($serNum,...) 
  = map { (my $v = $_) =~ s/^\s+|\s+$//g; $v } @matches;

猜你在找的正则表达式相关文章