加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式处理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]+
	)+
)?


来自《精通正则表达式》

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读