Бесконечный цикл с использованием пары совпадений регулярных выражений Perl

Я написал небольшой Perl-скрипт с регулярными выражениями для получения HTML-компонентов веб-сайта.

Я знаю, что это не лучший способ выполнения такой работы, но я пытался проверить свои навыки регулярных выражений.

При запуске с одним из двух шаблонов регулярных выражений в цикле while он работает отлично и отображает правильный вывод. Но когда я пытаюсь проверить оба шаблона в цикле while, второй шаблон совпадает каждый раз, и цикл выполняется бесконечно.

Мой сценарий:

#!/usr/bin/perl -w
use strict;

while (<STDIN>) {

    while ( (m/<span class=\"itempp\">([^<]+)+?<\/span>/g) ||
            (m/<font size=\"-1\">([^<]+)+?<\/font>/g) ) {
        print "$1\n";
    }
}

Я тестирую приведенный выше скрипт с образцом ввода:

<a href="http://linkTest">Link title</a>
<span class="itempp">$150</span>
<font size="-1"> (Location)</font>

Желаемый выход:

$150
(Location)

Благодарю вас! Любая помощь будет высоко ценится!

6
задан Borodin 29 July 2012 в 08:58
поделиться