正则表达式快速入门

快速学习正则表达式

学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。好了,不多说废话,开始学习吧! 首先给你推荐一款正则表达式测试器。免安装版的,解压后可以直接打开!

其实,从总的来说,我们平时经常用的就以下几种:

?表示重复0次或1次

+表示重复1次或多次

{n} 重复n次

{n,} 重复n次或更多次

{n,m} 重复n到m次

.表示除了换行符以外的任意字符

*表示重复0零次或多次

.*连在一起就意味着任意数量的不包含换行的字符

\b匹配单词的开始或结束

\B匹配不是单词开头或结束的位置

\d匹配单个数字(0,或1,或2…或9)

\D匹配任意非数字的字符

\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格

\S匹配任意不是空白符的字符

\w匹配单个的单词字符(能够出现在一个单词中的字符,包括字母或数字或下划线或汉字)

\W匹配任意不是字母,数字,下划线,汉字的字符-连字符,在两个字符之间创建范围,如[A-Z]

^匹配字符串的开始

$匹配字符串的结束 

^和$只匹配一个位置例如: 匹配以String开始的行时表示为 ^String,匹配以String结尾的行时表示为 String$,另外^$匹配空行,^String$表示只包含“String”字符串,^匹配任意行。

\表示转义,比如\"表示",\(表示(

[]表示范围,比如[.?!]匹配标点符号(.或?或!),[0-9]代表的含意与\d就是完全一致的:表示1位数字;同理[a-z0-9A-Z_]也完全等同于\w(如果只考虑英文的话)。

\b是正则表达式规定的一个特殊代码(某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处,它只匹配一个位置。例如:I am Boby.你要找的是am后面不远处跟着一个Boby,你应该用\bam\b.*\bBoby\b。如图:[

之前说过”.*“连在一起意味着任意数量的不包含换行的字符。现在\bam\b.*\bBoby\b的意思就很明显了:先是一个单词am,然后是任意个任意字符(但不能是换行),最后是Boby这个单词。前边的内容可以连续重复使用任意次以使整个表达式得到匹配。

下面来举几个实例学习一下,来看一下大众点评济南,比如我要爬取首页的16个一级分类,如图

首先右击页面查看页面的源代码,如图

浏览16个分类的href可知格式均为"/jinan/......",将页面源代码复制粘贴到测试器源文本处,根据16个分类的href附近标签的相似性可以得出图中的正则表达式<a class="name" href="(/jinan/\w+)" date-name="\w+">,

其中()表示最终要提取出的内容,、w+表示重复一次或多次的字母。

其实正则表达式并不难懂,只要你经过多次联系,一定会掌握好它的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值