gpt4 book ai didi

regex - 如何在Perl中遍历正则表达式匹配变量?

转载 作者:行者123 更新时间:2023-12-04 18:16:07 24 4
gpt4 key购买 nike

我有一个很长的正则表达式,可以将文本文件解析为各种匹配变量。

为了鲁棒性,匹配变量可能包含空格。我想通过遍历match变量以系统的方式删除空格。

例如,我有匹配变量$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, $3, $4, ...);

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

关于regex - 如何在Perl中遍历正则表达式匹配变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com