正则表达式学习笔记

最近由于要学习网络爬虫,开始着手学习正则表达式。

环境:mac

工具:REGEXR

参考书:Michael Fitzgerald 的学习正则表达式

  由于需求不多,我只是大致了解了一些有关匹配的用处,记录如下:

1.字符组"[]"方括号内加匹配关键字如[0-9]则匹配数字

2.字符组简式 "\d"。“."则用来匹配任意字符。"\D"相当于对\d取反,匹配非数字字符。

3.括号"()"用来捕捉分组,\1,\2……则用来后向引用。

4."{}"中括号代表量词,如{3}代表重复三次。如\d{3}-?\d{3}-?\d{4}。其中?表示之前的"连字符"可以有也可以没有。

这个关键字可以匹配形如 xxx-xxx-xxxx。

5.中括号内可以用","隔开,表示选择如\d{3,4}表示数字出现3或者4次

6.来看个例子,(\d{3}[.-]?){2}\d{4} 这个索引表示xxx "-"||"." xxx "-"||"." xxxx

7脱字符^用在正则表达式起始位置或者竖线(|)之后,表示关键字出现在一行的起始位置。

如^(\(\d{3}\)|^\d{3}[.-]?\d{3}[,-]?\d{4}$

第一个为脱字符。然后是捕获分组的左括号,然后知转义字符"(",之后是三个数字,转义字符右")","|"表示选择,左右代表选择一个。最后一个$为匹配航结束为止

8.\w匹配所有单词字符 \w与\D区别是,\D会匹配空格,标点符号,\w却不会,它只匹配字母,数字,下划线。

9.\W匹配非单词字符

10.“\s=[ \t\n\r]”意思是匹配空白符

11.\b为单词边界,如\b \w{7}\b 为匹配一个七个字母的单词

12.".*"匹配0个或者多个字符

13.P23 2.7给文本加标签(sed,perl),略,有需要再看。

14.\B 表示非单词边界,如\Be\B则匹配到小写字母e,其两边都是其他字母或者非字母单词

15.Page 33 3.3后面略

16.(?i)用来不区分大小写 如(?i)the 会匹配the The THE等等

17.子模式形如(the|The|THE),(t\T)h(e|eir)

18.后向引用可用\1 也可以用$1

19.命名分组 形式"?<name>"如 (?<z>0{3}),z是分组名

20.非捕获分组,据说会提高性能,暂且看不出来。(?:the|The|THE)//(?i)(?:the)//(?i:the)

21.并集[0-3[6-9]],用来匹配0-3或6-9的数字,差集[a-z&&[^m-r]]a-z且不是m-r的。

22.P58 5.3略

23.匹配unicode用\u00e9(00e9为16进制)也可写作\xe9,

24.量词。分为三种,贪心,懒惰和占有。贪心的量词具有回溯功能,即从整个字符串开始匹配,然后逐一减少。树上的比喻是将全部东西吃进去,然后一个一个吐出来。懒惰是另外一种策略。从起始位置开始寻找匹配,每次检查字符串的一个字符。最后尝试匹配整个字符串。要使量词是懒惰的,要加(?)。占有量词会覆盖整个目标然后尝试匹配,但是只尝试一次,不会回溯。

25.举例。".*"将会贪心的方式匹配所有字符。如"9*"和"9.*"的区别,以及"9+"。

26.花括号“{}“用来匹配特定次数,如7{1},表示一次7。“7{1,}=7+”代表7出现一次或者多次,"7*=={}0,"代表0次或者多次。"7?==7{0,1}"代表0次或者一次。

27.懒惰匹配比较有意思,能少则少。如5{2,5}?他就只匹配2个5.

28.环视,包括四种。正前瞻,反前瞻,正后顾,反后顾。正前瞻即对匹配的后面有要求如(?i)ancient (?=marinere),他就会匹配不论大小写的ancient,要求后面是marinere.反前瞻就是要求后面找不到相应内容,如 (?i)ancient (?!marinere)要求就是后面不是marinere的ancient。正后顾与正前瞻方向相反,(?i)(?<=ancyent) marinere,反后顾(?i)(?<!ancyent) marinere。

29.之后的HTML暂时还用不到。先这样吧


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值