正则表达式学习笔记
最近由于要学习网络爬虫,开始着手学习正则表达式。 环境: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=[ tnr]”意思是匹配空白符 11.b为单词边界,如b w{7}b 为匹配一个七个字母的单词 12.".*"匹配0个或者多个字符 13.P23 2.7给文本加标签(sed,perl),略,有需要再看。 14.B 表示非单词边界,如BeB则匹配到小写字母e,其两边都是其他字母或者非字母单词 15.Page 33 3.3后面略 16.(?i)用来不区分大小写 如(?i)the 会匹配the The THE等等 17.子模式形如(the|The|THE),(tT)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暂时还用不到。先这样吧 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |