0

这是要修剪的文本:

/home/netgear/Desktop/WGET-1.13/wget-1.13/src/cmpt.c:388,error,resourceLeak,Resource leak: fr

从上面的文本中,我需要获取“:”旁边的数据。我怎么得到388,error,resourceLeak,Resource leak: fr

4

2 回答 2

3

您可以使用split分隔符将字符串分隔为基于分隔符的列表。在您的情况下,分隔符应该是:

my @parts = split ':', $text;

由于您要提取的文本也可以包含 a :,因此请使用limit参数在第一个之后停止:

my @parts = split ':', $text, 2;

$parts[1]然后将包含您要提取的文本。您还可以将结果传递到列表中,丢弃第一个元素:

my (undef, $extract) = split ':', $text, 2;
于 2013-09-24T11:57:30.100 回答
1

除了@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
于 2013-09-24T12:53:07.703 回答