正则表达式处理html实例(Perl实现)

来源:互联网 发布:java 1.7.0 openjdk 编辑:程序博客网 时间:2024/06/07 04:52

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]+)+)?


来自《精通正则表达式》


原创粉丝点击