2011-09-07 63 views
0

除了括號內的第一個單詞是'test'使用Perl之外,我該如何刪除括號內的所有單詞(包括括號)?如何刪除括號內的單詞,除非括號中的第一個單詞是Perl中的'test'?

例如:

don't delete = (test 1) 
       (test 2) 

delete word(s) plus parenthesis = (scsi) 
delete word(s) plus parenthesis = (normal) 

這裏是我試過到目前爲止:

$_ =~ s/\([a-oA-Oq-zQ-z].*\)//g; 
+0

我是正確的思維要刪除的話在括號中加上括號本身,除非括號中的內容開始「(test')?如果文本是(test)',是否被刪除?如果文本是'(test me)',那麼它不會被刪除;那是對的嗎? –

回答

3

嘗試.....

s/\((?!test).*?\)//g; 
+0

謝謝,它的工作 – walker

+1

只是爲了澄清:'?!'是一個負面的前瞻斷言和'。*?'強制最小(非實質)匹配。 – Itamar