正则表达式笔记

正则表达式

正则的用处:python的网页爬虫中用的相当多

写正则表达式的整体思路:

首先把你要匹配的字符串粘过来,然后把里面共性的东西留着,空格换成\s,其他的可变字符串替换成各种匹配,然后那些不变的部分留着就行了。

pattern

元字符 说明
. 所有
\b begin,匹配单词开始
^ 匹配一行的开始
$ 匹配一行的结束
\d digital,数字
\w word,匹配数字字母下划线汉字,什么都能匹配
\s 匹配空格
\ 转义符 .*\ 这些用

.匹配任意

字符集:[12] 中括号是字符集,匹配中括号中任意字符中的一个,这个表达式匹配1或者2,只匹配一个

[0-9]就相当于\d

这个[]这里还要多写一点,因为[]里面无限装东西,而含义就是这个字符集相当于里面装的所有东西的其中一种,就有一个或的意思在里面。如果是两个表达式来取或的话,就用|

次数:

*0或多个

+至少一个

数量词[0-9]{4},匹配四位数,大括号套起来就是次数

[0-9]{4,6}这个是贪婪匹配,比如要被匹配的字符串一共就六个数字,那这肯定就都匹配了,先从上限开始找

[0-9]{4,6}?这个等同于[0-9]{4},后面带了一个问号之后,就不敢多要了,大括号成了废话。

分组()

分组是括号,只要看见括号,而且这个括号前面还没有转义符的话,且括号后面跟的是大括号,比如

([1-9].){3}

这种小括号大括号连着用的结构,相当方便断句啊!

分组的别名

如果分组太多,不命名不好调用。问号尖括号连用,外面用小括号包着,只要看见这个小括号跑不了就是分组,例如:

(?([1-9].){3})

(? exp )

如果尖括号前面不带问号的话,这个<>本身就不构成语法。

分组这个东西,有了括号之后,就方便把这个组的取值拉出来,(?<> xxxx)这种表达式,把问号尖括号去掉之后,其他的仍然是一个正常的正则分组。

分组表达式取反
分组取反

问号冒号连用

(?: exp),(?:([1-9].){3})

这个取到的是上面这个表达式没匹配到的部分,问号冒号连用没法命名

贪婪匹配与懒惰匹配

贪婪比如 .*1,*就是贪婪,流星碎片,尽可能多的去匹配

懒惰 .*?1,?就是懒惰,尽可能少的去匹配

这两个中,都是匹配xxxxx1,不过第一个要匹配到最后一个1,第二个到第一个1就停了。

(问号, 表示一点贪婪之后???)

你可能感兴趣的:(正则表达式笔记)