我在自學Perl,我通過示例學得最好。因此,我正在研究一個簡單的Perl腳本,它會刮掉一個特定的博客,並發現自己對一些正則表達式感到困惑。該腳本查找HTML以下塊:我是Perl新手,有幾個正則表達式問題
<dt><a name="2004-10-25"><strong>October 25th</strong></a></dt>
<dd>
<p>
[Content]
</p>
</dd>
... and so on.
和這裏的示例腳本,我是學:
#!/usr/bin/perl -w
use strict;
use XML::RSS;
use LWP::Simple;
use HTML::Entities;
my $rss = new XML::RSS (version => '1.0');
my $url = "http://www.linux.org.uk/~telsa/Diary/diary.html";
my $page = get($url);
$rss->channel(title => "The more accurate diary. Really.",
link => $url,
description => "Telsa's diary of life with a hacker:"
. " the current ramblings");
foreach (split ('<dt>', $page))
{
if (/<a\sname="
([^"]*) # Anchor name
">
<strong>
([^>]*) # Post title
<\/strong><\/a><\/dt>\s*<dd>
(.*) # Body of post
<\/dd>/six)
{
$rss->add_item(title => $2,
link => "$url#$1",
description => encode_entities($3));
}
}
如果你有時間,以更好地幫助我瞭解,我的問題是:
如何做下面的行工作:
([^「] *)#錨名
如何做下面的行工作:
([^>] *)#職銜
什麼的 「六個一」 指的是在下面一行:
</DD >/six)
非常感謝您的幫助!我現在也在研究自己的問題的答案,但希望有人能給我一個提升!
帖子標題位看起來應該是'([^ <] *)' – ysth 2009-10-22 06:22:56
我知道你是Perl新手,但'六個'是什麼意思?讓我想起那個簡化sinx/cosx到/ co – EmFi 2009-10-22 06:30:07
的都市傳奇人物請認識到這是一個不好的例子。 HTML不是一種常規語言,因此正則表達式不是解析它的好工具。 – Svante 2009-10-22 07:02:59