1.Html中Tag提取
<("[^"]*"|'[^']*'|[^'">])*>
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,否则默认为80
my $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]+ )+ )?
来自《精通正则表达式》 原文链接:https://www.f2er.com/regex/362697.html