2010-12-01 76 views
4

我想用我的perl腳本中的正則表達式解析文件,以匹配表達式:定期進行匹配 n和空間

空間和「\ n」個一交替的方式(行) - 即第一我想它來搭配空間,然後一個「\ n」,然後是一個空格(這是文件中的新行...等)

感謝, 〜AD

+0

真的嗎?你嘗試在Q和A的「狂野西部」發佈一個正則表達式問題? 8o0哇...我有點驚訝,你沒有得到一些關於告訴你只是在Mac/Linux/PC上做的答案...是的,我知道perl在他們所有的作品,它是平臺獨立的;這是我的觀點; 0)))) – Keng 2010-12-01 13:41:05

回答

1

試試這個:

(^ \n)+ 
0

要匹配開始一行,使用插入符號^

要匹配空格,可以使用文字空間或任何空格,使用\s

sgm置於該模式的末尾,例如, /pattern/sgm將導致它跨越線路匹配。

如果您有興趣,還有更多的信息和perldoc perlfaq6的一些例子。

2

你可以這樣做:

if($file =~/ |(?: \n)+ ?/) { 
     print $file." has the pattern\n"; 
} 

使用的正則表達式是|(?: \n)+ ?相匹配:

  • 單一的空間或
  • 一個或多個space\n其次由 可選space
0

你說你想要你的模式中的第二個空間在新的行。現在你是否能夠得到這個取決於你從哪裏得到你的字符串(好吧,也許不是,其中,但我想你明白了我的觀點)。如果您要解析的數據是從文件中讀取的,那麼您必須以段落模式讀取文件(即每個段落而不是每行都將構成一條記錄)。

假設你正在使用的文件處理文件,這樣做:

{ 
    local $/ = ""; # one paragraph constitutes one record 
    while (<FILE>) { 
     if (/ \n /) { 
     print "Found one match!\n"; 
     } 
    } 
} 

請注意,我用正則表達式模式沒有考慮到空間換行空間多次出現,因爲我沒」確定你到底想要做什麼。但無論如何,我的主要觀點是利用

local $/ = ""; 

HTH