字符串匹配问题?

多谢各位前辈的指点,我先消化一下
S60_3rd_MR_3:com.nokia.s60 (alias 3rd) - default
Series60_v21_CW:com.nokia.series60
S60_3rd_MR_4:com.nokia.s60

就是这样的输入,谢谢


QUOTE:
原帖由 hepower 于 2008-1-4 10:26 发表
S60_3rd_MR_3:com.nokia.s60 (alias 3rd) - default
Series60_v21_CW:com.nokia.series60
S60_3rd_MR_4:com.nokia.s60

就是这样的输入,谢谢

那他那个方法完全可以啊

[Copy to clipboard] [ - ]
CODE:
use strict; use warnings;

open(DATA,"data");      #data 是你的文件名
while (<DATA>) {
    print $1, "\n" if (/^(.+?)\s\(?/);   #我把他的空格改成\s了,也许更符合你的文件,试试看吧
}



[Copy to clipboard] [ - ]
CODE:
perl -lne 'print $1 if /:([^(]+)\s*/'

也有可能是这样,我不要-default,只要前面的部分,谢谢
S60_3rd_MR_3:com.nokia.s60 (alias 3rd)
Series60_v21_CW:com.nokia.series60 - default
S60_3rd_MR_4:com.nokia.s60


[Copy to clipboard] [ - ]
CODE:
perl -lne 'print $1 if /:([^(-]+)\s*/'


没有一劳永逸的方法,你到底想干嘛啊
呵呵,我就是想提取一些信息,但是输入的信息格式不是很固定,谢谢大家的帮忙了


[Copy to clipboard] [ - ]
CODE:
use strict;
use warnings;

open(MYF,"<si.txt") or die "Can't open the file : $! \n";
while(my $line=<MYF>){
    if($line=~m/^([^\s]+?)\s(\(.*?\))?/g){
        print $1,"\n";
    }
}
close MYF;