我是新来的Perl,有几个问题regex
-
05-07-2019 - |
题
我教自己Perl和我学习最好的例子。因此,我在学习一个简单的Perl脚本,擦伤的一个具体博客,并发现自己困惑的几regex发言。脚本看起来用于以下的大块html:
<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));
}
}
如果你有时间,以更好地帮助我了解,我的问题是:
如何以下行工作:
([^"]*)#Anchor的名字
如何以下行工作:
([^>]*)#文章标题
什么是"六"意味着在下面的线:
</dd>六)
感谢这么多事先对所有你的帮助!我也在研究解答我自己的问题的时刻,但是希望有人能给我一个提升!
解决方案
如何以下行工作...
([^"]*)#Anchor的名字
零个或更多的事情,而不是",捕获的,为1美元,2美元,或无论如何,取决于括号内(在我们是。
如何以下行工作...
([^>]*)#文章标题
零个或更多的事情,这是不>,捕获的,为1美元,2美元,或什么的。
什么是"六"的意思是的 下线路...
</dd>六)
- s=比赛为单个行(这只是意味着"."匹配的一切,包括 ,它不会做否则)
- i=匹配的情况不敏感的
- x=忽略的空白在regex.
x
也使得它可以把意见变成regex本身,因此喜欢的东西 # Post title
只有评论意见。
看看 perldoc perlre 更多/更好的信息。该链接是Perl5.10.如果你没有Perl5.10你应该看看perlre文版本的Perl代替。
不隶属于 StackOverflow