簡體   English   中英

請幫助我定義一個perl正則表達式

[英]please help me to define a perl regular expression

我是新手。 請幫忙。 我正在努力爬行

<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>

在網頁中。 我想抓住/ v / name / idlike123123ksajdfk部分。 (知道

<div class="name"><a href="/v/

部分是固定的)所以我寫了正則表達式(可以讓你發笑):

~m#<div class="name"><a href="(/v/.*?)">#

如果您更正我的愚蠢代碼,這將非常有幫助。

使用功能強大的HTML解析器 (有關原因,請參見http://htmlparsing.com/ ):

use strictures;
use Web::Query qw();
my $w = Web::Query->new_from_html(<<'HTML');
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
<div class="name"><a href="/v/name/idlike123123ksajdfk">name</a></div>
HTML

my @v_links = $w->find('div.name > a[href^="/v/"]')->attr('href');

有很多Perl模塊可以從HTML中提取鏈接。 WWW :: MechanizeMojo :: DOMHTML :: LinkExtorHTML :: SimpleLinkExtor都可以做到這一點。

使用Mojolicious進行Web抓取可能是當今在Perl中最簡單的方法

http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#Web_scraping

您不應該使用regex來解析HTML ,因為有很多庫可以進行此類解析。

達西姆的答案就是一個很好的例子。


但是,如果仍然要使用正則表達式,並且將文本分配給$_ ,則

my @list = m{<div class="name"><a href="(/v/.*?)">}g;

將為您提供所有發現的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM