正则表达式匹配url的一种思路

原创 2015年03月13日 11:10:53

背景是是搜集一类网站的url。可以在几个网站中找到相关链接。一个个打开复制太麻烦,于是就考虑在源代码中提取出其中的url。

于是将页面源代码保存到url.txt文件中后,通过如下脚本通过正则表达式过滤出其中的url。

#! /usr/bin/perl
use warnings;
@strs=`cat ./url.txt`;
foreach (@strs){
	if(/(https?.*?\.(:?cn\b|com\b|net\b|org\b|gov\b)(?!\.))/)
		{print "$1\n";}
}
通过观察,页面源码中的url都含有一下特点。

1.http或者https开头。(这个特别棒,省了不少事)

2.中间是一段任意字符串

3.结尾处是知名的顶级域


然后写出正则表达式如下

(https?.*?\.(:?cn\b|com\b|net\b|org\b|gov\b)(?!\.))

详细解释下:

http:先是匹配http

s? :可有可无的s

.*? :以非贪婪的模式匹配任意长度的任意字符。 “.''表示任意字符,” *?“表示非贪婪模式匹配任意长度。如果使用贪婪模式,会出现很多意外情况。

\. :匹配点符号,因为"."在正则中表示任意字符,所以想要匹配”."本身需要用”\“进行转义

(:? ) :其实就是简单的括号,改变下优先级,加上”:?“ 是以为perl中会将()内的匹配到的字符串存储到相应变量中,而加上(:?)则不会储存。

cn\b|com\b :匹配不在字符串中间的cn或者com。之后的net,org,gov也都一样。

(?!\.):这是个零宽断言,就是说前面的cn,com字符串后面没有点。这是为了避免www.ujn.edu.cn这样的,只匹配出www.ujn.edu,丢掉后面的cn。




网上有跟多匹配各种类型的url的表达式,小弟才疏学浅,大部分都看不懂,自己写个简简单单的,符合自己要求的随便用用,需要的拿去。求别喷。

相关文章推荐

正则表达式匹配URL

最近在做一些关于URL匹配的项目,本来对正则表达式了解的不多,上网搜索了好多前辈写的正则表达式,发现很少能被我使用的,现将我自己写的正则表达式贴出来,供大家参考。 %% 首先,正则表达式:   ...

匹配URL的正则表达式解析

看到两篇关于url正则的不错文章 正则表达式匹配URL 正确匹配URL的正则表达式 第一篇属于比较正常通用的思维,匹配url的各个部分,ip形式、端口等;第二篇比较抽象,个人理解应该是作者默认...
  • t_1007
  • t_1007
  • 2016年08月23日 18:47
  • 7276

Perl入门(四)Perl的正则表达式

正则表达式是Perl的

一个Filter配置多个url-pattern

最近做项目遇到一个Filter需要配置多个url-pattern,上网查了下资料,经测试,现总结下  一、完全错误的方式  Java代码        author...

正则表达式应用--提取CSDN所有下载资源页面URl的思路与代码实现

其实这个内容本身没有什么实际价值,只是有段时间,自己想找所有下载分为0的资源,闲来没事就随手写了一个小程序,见识到了正则表达式的强大  1分析需求 2查找规律,实现思路,3实现代码 1分析...

leetcode 10.Regular Expression Matching(正则表达式匹配) 解题思路和方法

Regular Expression Matching Implement regular expression matching with support for '.' and '*'. ...

正则表达式大小写匹配以及解决思路的探索

今天遇见一个消除js正则表达式不区分大小写的问题,网上一搜,发现自己果然是菜鸟。     在js里面//g,其中g表示全局匹配,如果没有这个,那么就意味着只能匹配一次就会自动结束;/i/就表示在匹配...

一个匹配URL的正则表达式例子(带详细解释)

可处理正则表达式的方法有regexp.exec、regexp.test、string、match、string.replace、string.search和string.split。一个带详细解释的匹...

Django中URL正则表达式匹配

Django框架中的URL分发采用正则表达式匹配来进行,以下是正则表达式的基本规则:1官方演示代码:from django.conf.urls import urlfrom . import view...

URL(基础一) UrlRewrite正则表达式匹配、配置实例和分析

urlrewrite.xml配置:                                                                           无参数匹配   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:正则表达式匹配url的一种思路
举报原因:
原因补充:

(最多只允许输入30个字)