Я пытаюсь извлечь определенную строку чисел из текстового файла, используя регулярную экспрессию, но когда мой код работает, он захватывает числа после косой черты в разделении между датой и временем. Вот что я до сих пор.Perl Экземпляр регулярного выражения
while (<INFILE>) {
my @fields = split(/\ /, $_);
my @output;
foreach my $field (@fields) {
if ($field =~ /[0-9]{5}\//) {
push @output, $field;
}
}
if (@output) {
my $line = join(' ', @output);
print "$line\n";
print OUTFILE "$line\n";
}
}
Линия Я пытаюсь извлечь данные из является
D20/2004 254/1944 254/2041 15254/2011 ALL-V4YM 001 AUTO C-C0000
данные мне нужно, это 15254
, но когда я запускаю мой код возвращает 15254/2011
и моя программа erroring вне.
Я хотел бы предложить добавить начало лин e anchor к вашему выражению, чтобы вы не захватили поле, если в нем больше пяти цифр. '/^([0-9] {5}) \ //' –
@TrentonTrama: Хорошая идея. Обновлено. – toolic
Вы также можете использовать 'my ($ value) = $ field = ~ m,^(\ d {5}) \ /,;' если вам не нравится '$ 1'. – Sobrique