Perl和正則表達式的新手沒有說,我試圖在perl正則表達式中使用數組中的元素。這裏是摘錄在Perl中使用數組元素進行模式匹配
my $temp = $line =~ s/somestring[^\n]*$_// for @myarray;
如果我硬編碼字符串而不是$ _它工作正常。另外$ _單獨打印字符串很好。那麼我做錯了什麼?即使使用for循環的擴展版本也不會產生匹配。
P.S只是爲了澄清數組只有一個元素,我知道它匹配線。
Perl和正則表達式的新手沒有說,我試圖在perl正則表達式中使用數組中的元素。這裏是摘錄在Perl中使用數組元素進行模式匹配
my $temp = $line =~ s/somestring[^\n]*$_// for @myarray;
如果我硬編碼字符串而不是$ _它工作正常。另外$ _單獨打印字符串很好。那麼我做錯了什麼?即使使用for循環的擴展版本也不會產生匹配。
P.S只是爲了澄清數組只有一個元素,我知道它匹配線。
它應該添加圓括號,儘管我希望數組的內容沒有特殊字符,因爲您需要使用quotemeta
函數來轉義它們。
my $temp;
($temp = $line) =~ s/somestring[^\n]*$_// for @myarray;
我不是Perl開發者,但是在REGEX中'$'有特殊含義 - 它錨定在字符串末尾,因此可能需要轉義。 – Utkanos 2012-07-13 17:33:47
@utkanos:沒必要。標量變量插值在Perl正則表達式中工作得很好。 perldoc perlop在「引用和引用運營商」一節下。 – DavidO 2012-07-13 17:45:40
這就是爲什麼我發佈評論,而不是答案。我只是說,在一般的REGEX語法中,'$'具有特殊的含義。我不是Perl開發人員,所以我沒有提交 - 我只是在提出這個想法。 – Utkanos 2012-07-13 17:50:56