2014-04-15 187 views
0

在我正在處理的程序中,我試圖獲取一個txt文件,然後打印出包含在一對引號中的txt位。打印Perl正則表達式匹配

假設我已經邁出了txt文件,並把它與每一行這樣的數組元素的數組是什麼,我是假設會的工作,但很可惜沒有運氣:

txt file contents: 
Lorem ipsum dolor sit amet 
consectetur "adipisicing elit" 
sed "do" eiusmod tempor incididunt 
ut "labore et dolore" magna aliqua 

CODE: 
foreach(@arr) 
{ 
    print $1 if /("*")/g; 
} 

Output: 
"" 

回答

2
... 
foreach (@arr) { 
    print $1 for /(".*?")/g; 
} 
... 
+0

這工作完美! 它必須是(「+。*」),否則我的perl版本打印「嵌套量詞」錯誤消息。 – user1783150

+0

我唯一不明白的是,爲什麼。 (點)意思是'除了換行符以外的任何字符'強制它打印正確? – user1783150

+0

@ user1783150 in'「。*?」''*'匹配所有字符零次或多次,'?「'告訴正則表達式匹配,直到第一個雙引號(非貪婪匹配) –

0
#!/usr/bin/perl 

use strict; 
use warnings; 

foreach(<DATA>) { 
    print $1 if /(".*")/; 
} 

__DATA__ 
txt file contents: 
Lorem ipsum dolor sit amet 
consectetur "adipisicing elit" 
sed "do" eiusmod tempor incididunt 
ut "labore et dolore" magna aliqua 
+0

與什麼擴展名應該我保存這個文件,我應該如何運行它? – aelor

+0

@aelor:我使用了__DATA__部分,你應該使用一個文件處理程序來查看示例[here](http://perldoc.perl.org/functions/open.html)。 –