2013-09-24 43 views
0

這裏是文字修剪得從文本所需的字符串:如何用perl

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

從上面的文字我需要的數據旁邊的「:」。我如何獲得388,error,resourceLeak,Resource leak: fr

+0

只是使用正則表達式 – Suic

+3

'我的$ required_pa​​rt = Q/388,錯誤,resourceLeak,資源泄漏:fr /;' – Toto

回答

3

您可以使用split將字符串分隔成基於分隔符的列表。在你的情況下,分隔符應該是一個:

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

當你要提取還可以包含:的文本,使用limit參數後的第一個停止:

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

$parts[1]會然後包含您想要提取的文本。您也可以通過結果到一個列表,丟棄的第一個元素:

my (undef, $extract) = split ':', $text, 2; 
1

除了@RobEarl's建議使用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