1

好的,假设我正在阅读的文件中有以下内容:

File:foobarbar.xml
abc
def
ghi
File:barbar.xml
jkl
mno

我希望输出为:

foobarbar
barbar

但由于某种原因,我只得到

foobarbar

我正在使用以下代码:

if (/File([\s\S]+?)xml/) {
    $key= $1; 
    print OUTPUT "$key\n"
}

注意:在上面的代码中,$key设置为$number one,而不是$lower case letter L。任何帮助将不胜感激!

4

2 回答 2

2

该正则表达式仅匹配第一个文件,使用 /g 修饰符获取所有匹配项

while (/File:(.*)\.xml/g) {
    $key = $1;
    print OUTPUT "$key\n";
}
于 2012-07-25T17:27:44.767 回答
2

当您逐行读取输入时,以下代码按预期工作:

while(<>) {
  if (/File:([\s\S]+?)\.xml/){
    $key= $1; 
    print "$key\n";
  }
}
于 2012-07-25T17:31:47.747 回答