好的,所以我想在我正在阅读的文件中有以下内容:
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
。任何帮助将不胜感激!
答案 0 :(得分:2)
正则表达式只匹配第一个文件,使用/ g修饰符获取所有匹配
while (/File:(.*)\.xml/g) {
$key = $1;
print OUTPUT "$key\n";
}
答案 1 :(得分:2)
当您逐行读取输入时,下面的代码按预期工作:
while(<>) {
if (/File:([\s\S]+?)\.xml/){
$key= $1;
print "$key\n";
}
}