2011-09-07 53 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