Я новичок в мире регулярных выражений, и у меня есть простая проблема (я думаю) извлечение информации из архива в perl. Этот архив имеет 200 000 строк приблиз и несколько строк имеет следующий форматизвлекающая подстрока с регулярным выражением в perl
WO GB111MTD1 dddD-51 TIME 141202 0105 PAGE 1
я хочу поместить в переменную GB111MTD1 и я знаю, что всегда слово «WO» является первым.
Что я попробовал следующий:
открыт (архив, "C: /Users/g/Desktop/c/alarms.log") или умереть "л \ п";
while(< archive>){
if($_ =~ /^WO\s+(.*)/){
print "Found: $1\n";
last;
}
}
это печатает меня всю строку, я хочу только «GB111MTD1».
--- следующая цель
while(< archive>){
if($_ =~ /^WO\s+(.*)\S/){
print "Found: $1\n";
last;
}
}
я хочу сказать, что здесь «если строка начинается с WO и имеют некоторые пробелы, совпадают со мной, что будет дальше, пока другие пробелы не найден»
здесь, единственное отличие состоит в том, что «1» из WO GB111MTD1 dddD-51 TIME 141202 0105 СТРАНИЦА 1 не отображается, но все еще не то, что я хочу
Надеюсь, вы понимаете мою проблему.
С уважением
Необходимо уточнить свое «следующее намерение». Является ли 1 всегда в конце строки? – toolic
Альтернативный подход состоит в том, чтобы рассматривать этот файл как файл CSV и читать его с помощью [Text :: CSV] (http://search.cpan.org/perldoc/Text::CSV_XS) или даже «ВЫБРАТЬ» вашу информацию с помощью [ DBD :: SQL] (http://search.cpan.org/perldoc/DBD::SQL). – reinierpost