2012-11-07 56 views
1

無法使用sed從正則表達式中刪除量詞和元字符。 使代碼複雜化的目的是在eval中使用。perl sed逃避正則表達式的量詞

$word_check = "about\s*[\w\s]+"; 
$word_check =~ s/\\\[.+\\\]//g; 
$$word_count[$#$word_count + 1] +=() = $word_check =~ /(\w+)\s*/g; 

Word_check是正則表達式的副本。想要減少正則表達式,只有它是與 匹配的話。使用正則表達式來做到這一點。然後計算單詞並將結果保存到數組中。 選擇背後的原因是正則表達式是除了幾個和 匹配($ &)的工作時,刪除的話。來自eval。下面的代碼旨在作爲一個字符串。

for (my \$i = 0; \$i < \$\$ref_word_count[\$R]; \$i++) { 
    \$temp_str =~ s/^\\w+\\s*//; 
} 

OK找到答案。只需要分解一些sed語句,並將方括號看作是一個字符。

$word_check =~ s/i$//; 
$word_check =~ s/[\.\+]//g; 
$word_check =~ s/\\[sdwSWD]//g; 
$word_check =~ s/[[]//g; 
$word_check =~ s/[]]//g; 
$word_check =~ s/[*]//g; 
$word_check =~ s/[?]//g; 
+2

你的問題不太清楚。你到底想做什麼?你能發表一個有效的例子,有一個輸入和期望的輸出嗎? –

回答

1

也許這有助於

\ Q報價(禁用)模式元字符,直到。\ E

。\ E結束這兩種情況下修改或引用部分,認爲六

perldoc perlre

+0

當我有空的字符串不工作時,這對我很好。謝謝 :) –