繁体   English   中英

使用Perl正则表达式返回子字符串

[英]Returning a substring using Perl regex

我正在玩Perl并试图更好地理解它的子串/正则表达式功能。

说我有一个字符串,如

[48:31.8]已发送:> 33 * 1311875297587 * eval * 0 * frame [0] *“A”<

并希望返回1311875297587.它将始终采用该格式。 我如何使用Perl做到这一点?

谢谢

假设“[48:31.8] ...”在$ string中,那么:

my ($number) = $string =~ /\*(\d+)\*eval\*/;

如果字符串不匹配, $number将是未定义的,否则它将包含"*""*eval*"之间的数字。

if ($str =~ /\*(\d+)\*/ ) {
    print $1;
}
my ($num) = '>33*1311875297587*eval*0*frame[0]*"A"<' =~ /(\d{3,})/;
print $num;

对于它的价值,我认为这是一个更健全的答案:

while(<STDIN>)
{
    @fields = split(/\*/,$1) if(/(?<=>)([^<>])+(?><)/);
    print "$fields[1]\n";
}

如果需要,这允许访问所有字段,并且不依赖于固有顺序来解析特定字段。

用你想要的任何逐行迭代替换while循环。 但是要进行测试,请将其作为Perl脚本运行,然后粘贴到您的行[48:31.8] Sent: >33*1311875297587*eval*0*frame[0]*"A"<或其他任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM