2014-04-16 37 views
0

當使用powergrep,有一個叫做選項:文件切片和第3個選項分別是:什麼是(?s)y(?m)en powergrep的等價物?

  • 沒有部分文件。
  • 逐行
  • 一行行包括換行符

我猜測,第一種選擇將類似於Perl的「M」修飾(「^」匹配字符串的開始和每個新行後;「$」匹配每個換行符和字符串末尾),選項Dot匹配新行,就好像Perl的's'修飾符被使用(「。」匹配所有字符,而不是排除換行符) 。

我不明白以下兩個選項。 逐行仍然可以打開復選框點匹配新行。並且逐行包括換行符會再次是(?s)修飾符,所以我不理解這些選項。

請有人可以解釋這些選項?以及與s和m修飾符的關係。

+0

tag perl相關 – justintime

回答

1

我不知道powergrep,但它聽起來像他們所控制對你是什麼樣的匹配。

  • 「Do not section files」與整個文件匹配。

    my $file = do { local $/; <$fh> }; 
    $file =~ /.../; 
    
  • 「逐行包括換行符」與每行匹配。

    while (my $line = <$fh>) { 
        $line =~ /.../; 
    } 
    
  • 「一行一行」地匹配每一行,

    while (<$fh>) { 
        chomp(my $chomped_line = $_); 
        $chomped_line =~ /.../; 
    } 
    

毫無疑問是「點相匹配的新線」等同於s修改。

+0

感謝您的更正和答覆。現在更清楚了。 – alex

1

要打開點匹配換行符在它前面的一個正則表達式,把(RS)。

(?n)或-line使Tcl調用「換行符匹配」。點和否定字符類將不匹配換行符。插入符號和美元符合換行符之前和之後。指定(?n)或-line與指定(?pw)或-linestop -lineanchor相同。 (?m)是歷史的同義詞(?n)。

http://www.regular-expressions.info/tcl.html

相關問題