正则表达式处理html实例(Perl实现)
发布时间:2020-12-14 02:18:23 所属栏目:百科 来源:网络整理
导读:1.Html中Tag提取 ("[^"]*"|'[^']*'|[^'"])* 2.提取a/a标签中的url和链接文本 while ($Html =~ m{ab([^]+)(.*?)/a}ig){my $Guts = $1;my $Link = $2;if ($Guts =~ m{b HREF#href属性s* = s*#两头可能出现空白符(?:#其值为"([^"]*)"#双引号字符串|'([^']*)
1.Html中Tag提取 <("[^"]*"|'[^']*'|[^'">])*>
2.提取<a></a>标签中的url和链接文本 while ($Html =~ m{ab([^>]+)>(.*?)</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: $Linkn";
}
}
3.校验HTTP URL 把它分解为主机名(hostname)和路径(path)两部分。 主机名是「^http://」之后到第一个/(如果有)之间的内容,路径就是除此之外的内容 「^http://([^/]+)(/.*)?$」
if ($url =~ m{^http://([^/:]+)(:(d+))?(/.*)?$}i)
{
my $host = $1;
my $port = $3 || 80; #如果存在就使用$3,否则默认为80
my $path = $4 || "/"; #如果存在就使用$4,否则默认为”/“
print "Host: $hostn";
print "Port: $portn";
print "Path: $pathn";
} else {
print "Not an HTTP URLn";
}
4.从纯文本中查找URL的框架,可以在其中添加匹配主机名的子表达式 b ( (ftp|https?)://[-w]+(.w[-w]*)+ | (?i: [a-z0-9] (?:[-a-z0-9]*[a-z0-9])? . )+ (?-i: comb | edub | bizb | govb | in(?:t|fo)b | milb | netb | orgb | [a-z][a-z]b ) ) ( : d+ )? ( / [^.!,?;"'<>()[]{}sx7F-xFF]* (?: [.!,?]+ [^.!,?;"'<>()[]()sx7F-xFF]+ )+ )? 来自《精通正则表达式》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |