这是要修剪的文本:
/home/netgear/Desktop/WGET-1.13/wget-1.13/src/cmpt.c:388,error,resourceLeak,Resource leak: fr
从上面的文本中,我需要获取“:”旁边的数据。我怎么得到388,error,resourceLeak,Resource leak: fr
?
这是要修剪的文本:
/home/netgear/Desktop/WGET-1.13/wget-1.13/src/cmpt.c:388,error,resourceLeak,Resource leak: fr
从上面的文本中,我需要获取“:”旁边的数据。我怎么得到388,error,resourceLeak,Resource leak: fr
?
您可以使用split
分隔符将字符串分隔为基于分隔符的列表。在您的情况下,分隔符应该是:
:
my @parts = split ':', $text;
由于您要提取的文本也可以包含 a :
,因此请使用limit
参数在第一个之后停止:
my @parts = split ':', $text, 2;
$parts[1]
然后将包含您要提取的文本。您还可以将结果传递到列表中,丢弃第一个元素:
my (undef, $extract) = split ':', $text, 2;
除了@RobEarl 关于 using 的建议之外split
,您还可以使用正则表达式来执行此操作。
my ($match) = $text =~ /^[^:]+:(.*?)$/;
正则表达式:
^ the beginning of the string
[^:]+ any character except: ':' (1 or more times)
: match ':'
( group and capture to \1:
.*? any character except \n (0 or more times)
) end of \1
$ before an optional \n, and the end of the string
$match
现在将保存捕获组的结果#1
..
388,error,resourceLeak,Resource leak: fr