如何在perl中从字符串变量复制模式
我需要使用perl在如何在perl中从字符串变量复制模式,perl,Perl,我需要使用perl在=和)之间复制一个句子的内容。 比如说: $temp="06/18/2012 08:35:35(PID=2150)"; 现在我需要将=和之间的值2150)复制到一个变量$temp2,该变量可以使用正则表达式轻松实现: my ($temp2) = $temp =~ /=(\d+)\)/; 只需查找=和\)之间的数字序列。结束括号必须转义,因为括号用于捕获组 必须将$temp2括在括号中的原因是需要强制列表上下文返回匹配结果。在标量上下文中,您只需要获得匹配的数量;1在本例
=
和)
之间复制一个句子的内容。
比如说:
$temp="06/18/2012 08:35:35(PID=2150)";
现在我需要将
=
和之间的值2150
)
复制到一个变量$temp2
,该变量可以使用正则表达式轻松实现:
my ($temp2) = $temp =~ /=(\d+)\)/;
只需查找=
和\)
之间的数字序列。结束括号必须转义,因为括号用于捕获组
必须将$temp2
括在括号中的原因是需要强制列表上下文返回匹配结果。在标量上下文中,您只需要获得匹配的数量;1在本例中。仅使用index()和substr()(如果有,作为练习;)
+1用于仔细展示如何在没有正则表达式的情况下完成这项工作-用于讨论为什么我们需要正则表达式。)哈哈,当然-这表明,虽然人们(至少一开始)说regex看起来很恶心。。。另一种选择可能会更恶心!另一个新颖的解决方案是
my$temp2=join',grep/\d/,grep{/=/../\)/}split//,$temp代码>。但不是很健壮。
$temp="06/18/2012 08:35:35(PID=2150)";
$temp = substr $temp, index($temp, "=") + 1, (index($temp, ")") - 1) - index($temp, "=");
print $temp;