【发布时间】:2013-12-21 05:52:21
【问题描述】:
我正在寻找一种方法来匹配单个字符串中的两个术语。例如,如果我需要同时匹配 "foo" 和 "bar" 以匹配和打印字符串,并且字符串是 "foo 121242Z AUTO 123456KT 8SM M10/M09 SLP02369",它将不匹配。但如果字符串是“foo 121242Z AUTO 123456KT 8SM bar M10/M09 SLP02369”,它将匹配然后继续打印。这是我目前拥有的代码,但我有点卡住了。谢谢!
use strict;
use warnings;
use File::Find;
use Cwd;
my @folder = ("/d2/aschwa/archive_project/METAR_data/");
open(OUT , '>', 'TEKGEZ_METARS.txt') or die "Could not open $!";
print OUT "Date (YYYYMMDD), Station, Day/Time, Obs Type, Wind/Gust (Kt), Vis (SM),
Sky, T/Td (C), Alt, Rmk\n";
print STDOUT "Finding METAR files\n";
my $criteria = sub {if(-e && /^/) {
open(my $file,$_) or die "Could not open $_ $!\n";
my $dir = getcwd;
my @dirs = split ('/', $dir);
while(<$file>) {
$_ =~ tr/\015//d;
print OUT $dirs[-1], ' ', $_ if /foo?.*bar/;
}
}
};
find($criteria, @folder);
close OUT;
print STDOUT "Done Finding Station METARS\n";
【问题讨论】:
标签: perl pattern-matching string-matching