我用正則表達式寫了一個小Perl腳本來獲取網站的HTML組件。使用一對Perl正則表達式匹配的無限循環
我知道它不是做這種工作的好方法,但我試圖測試我的正則表達式技巧。
當在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)
謝謝!任何幫助將不勝感激!
如果您正在處理多行文件,您將必須採用不同的方法。正如你在處理STDIN時明智地處理你的內心,同時仍然無用。使用HTML解析器是最不容易出錯的解決方案。你也可以嘗試用觸發器操作符匹配塊.. ..# – 2012-07-29 08:46:29
@ mugenkenichi:廢話。外部'while'遍歷文件的行,內部遍歷行中模式的出現次數。爲什麼內部'while'無用? – Borodin 2012-07-29 08:51:53
如果您正在處理多條線..我的意思是如果起始標籤與結束標籤位於不同的線上。無論如何,所有這些情況都可以通過專門的解析器處理得更好。 – 2012-07-29 08:54:13