【发布时间】:2012-06-18 13:37:33
【问题描述】:
我需要使用 perl 复制 = 和 ) 之间的句子内容。
比如说:
$temp="06/18/2012 08:35:35(PID=2150)";
现在我需要将= 和) 之间的值2150 复制到变量$temp2。
【问题讨论】:
标签: perl
我需要使用 perl 复制 = 和 ) 之间的句子内容。
比如说:
$temp="06/18/2012 08:35:35(PID=2150)";
现在我需要将= 和) 之间的值2150 复制到变量$temp2。
【问题讨论】:
标签: perl
使用正则表达式很容易实现:
my ($temp2) = $temp =~ /=(\d+)\)/;
只需查找= 和\) 之间的数字序列。右括号必须转义,因为括号用于捕获组。
您必须将$temp2 括在括号中的原因是您需要强制列表上下文返回匹配结果。在标量上下文中,您只会得到匹配的数量;在这种情况下为 1。
【讨论】:
仅使用 index() 和 substr()(作为练习,如果有的话;)。
$temp="06/18/2012 08:35:35(PID=2150)";
$temp = substr $temp, index($temp, "=") + 1, (index($temp, ")") - 1) - index($temp, "=");
print $temp;
【讨论】:
my $temp2 = join "", grep /\d/, grep {/=/../\)/} split //, $temp;。不过不是很健壮。