字符串匹配问题?

字符串匹配问题?

我能得到   xxx \n  或者  xxx  ( ddd ) \n 就是有时有括号,有时没有,括号里的字符串也不固定。
这两种字符串,我想提取xxx部分,请问怎么写?
我是这么写的

if($_ =~ /(.+?) \(*.+?\)* \n/)
{
     $1
}
好像$1总是空,怎么写啊,谢谢
不很明白你的意思,到底要什么?
呵呵  就是我得到的Input字符串的格式是xxx \n  或者  xxx  ( ddd ) \n
我想取xxx  部分,怎么取,(ddd) 这部分有时有有时没有,也就是说
line1  xxx \n
line2  xxx (ddd) \n
line3  xxx \n
.....
如何提取,谢谢
格式不是固定的?
每行后面的\n是指的回车,还是字面意义上的"\n"?
/(.+?) \(?/
对 格式不固定,有时候后面有个括号,括号里有一些内容,我就是想把括号和里面的内容过滤掉,谢谢
LonKi,你给的方法好像不行
兄可以写详细点么?我用你这个正则匹配不上.
试试这个:

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

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



QUOTE:
原帖由 hepower 于 2008-1-3 21:18 发表
对 格式不固定,有时候后面有个括号,括号里有一些内容,我就是想把括号和里面的内容过滤掉,谢谢
LonKi,你给的方法好像不行

我好像行.

use strict;
use warnings;

while (<DATA>) {
    print $1, "\n" if (/(.+?) \(?/);
}

__DATA__
abc
123 (xx)
456
def (OO)


QUOTE:
原帖由 hepower 于 2008-1-3 21:18 发表
对 格式不固定,有时候后面有个括号,括号里有一些内容,我就是想把括号和里面的内容过滤掉,谢谢
LonKi,你给的方法好像不行

在满足你当前需求时,这个方法是可以的
其实他这个方法往往匹配行首是你需要的字符串,后面是空格,然后有无括号都可以的情况
也许你文件不是这样的,你把实际文件copy一部分出来看看