Regex處理html執行個體(Perl實現)

來源:互聯網
上載者:User

1.Html中Tag提取

<("[^"]*"|'[^']*'|[^'">])*>

2.提取<a></a>標籤中的url和連結文本

while ($Html =~ m{a\b([^>]+)>(.*?)</a>}ig){my $Guts = $1;my $Link = $2;if ($Guts =~ m{\b HREF#href屬性\s* = \s*#兩頭可能出現空白符(?:#其值為"([^"]*)"#雙引號字串|'([^']*)'#單引號字串|([^'">\s]+)#或者是其他文本)}xi){my $Url = $+;print "$Url with link text: $Link\n";}}

3.校正HTTP URL

把它分解為主機名稱(hostname)和路徑(path)兩部分。

主機名稱是「^http://」之後到第一個/(如果有)之間的內容,路徑就是除此之外的內容

「^http://([^/]+)(/.*)?$」

if ($url =~ m{^http://([^/:]+)(:(\d+))?(/.*)?$}i){my $host = $1;my $port = $3 || 80;   #如果存在就使用$3,否則預設為80my $path = $4 || "/";  #如果存在就使用$4,否則預設為”/“print "Host: $host\n";print "Port: $port\n";print "Path: $path\n";}else{print "Not an HTTP URL\n";}

4.從純文字中尋找URL的架構,可以在其中添加匹配主機名稱的子運算式

\b((ftp|https?)://[-\w]+(\.\w[-\w]*)+|(?i: [a-z0-9] (?:[-a-z0-9]*[a-z0-9])? \. )+(?-i: com\b| edu\b| biz\b| gov\b| in(?:t|fo)\b| mil\b| net\b| org\b| [a-z][a-z]\b))( : \d+ )?(/[^.!,?;"'<>()\[\]{}\s\x7F-\xFF]*(?:[.!,?]+ [^.!,?;"'<>()\[\]()\s\x7F-\xFF]+)+)?

來自《精通Regex》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.