我正在使用Perl编写脚本,并需要从文本文件中提取一些信息。
这是我的代码 - 字符串值是虚构的,但代表了所有可能的字符串变化。
my @alpha = ("abcdefgh(i) jklmno(pqrs3), uvwxyz",
"abcdefghi jklmn(opq1st), uvwxyz",
"abcdefghi jklmn(o_q(1s3)), uvwxyz",
"abcdef(gh)i jklmno(pq(1s3)), uvwxyz");
foreach my $line (@alpha){
if ($line =~ /\((.*\(?.*\)?)\),/){
print $1
}
}
我正在尝试捕获最后一组括号(或方括号,对于英国英语使用者)中的大文本。
请注意,我使用“点”运算符,因为我想匹配任何内容,包括文本、数字或其他特殊字符。
基本上,我想打印出:
pqrs3
opq1st
o_q(1s3)
pq(1s3)
但是我一直收到以下错误信息:
(i) jklmno(pqrs3) <-- not ok
opq1st <-- this is ok
opq(1s3) <-- this is also ok
gh)i jklmno(pq(1s3) <-- not ok
我做错了什么?还是这种匹配方式根本不可能?
非常感谢您的帮助。