由于最近需要使用爬虫爬取数据进行测试,所以开始了爬虫的填坑之旅,那么首先就是先系统的学习下关于正则相关的知识啦。所以将下面正则方面的知识点做了个整理。语言环境为Python。主要讲解下Python的再保险模块。
下面的语法我就主要列出一部分,剩下的在python官网直接查阅即可:docs.python.org/3/library/r…
<强> 1.1,匹配单个字符强>
<代码>。\ d \ d \ w \ w \ s \ […][^…]代码>
匹配单个字符(.)
规则:匹配除换行之外的任意字符
在[24]:re.findall (“f。o”、“foo不是粮农组织”) [24]:[“foo”、“粮农组织”]
匹配任意(非)数字字符(\ d \ d)
\ d ,[0 - 9]
引用>
\ D ,(^ 0 - 9)匹配任意(非)普通字符(\ w \ w)
\ w普通字符包括[_0-9A-Za-z]同时也包括汉字
引用>
\ W非普通字符匹配任意(非)空字符(\ \年代)
\ s匹配任意空字符,[t \ r \ n \]
引用>
\ S匹配任意非空字符匹配字符集合([…])
<代码> [a - z] [a - z] [0 - 9] [_123a-z] 代码>
匹配字符集([^…])
规则:字符集取非,除列出的字符之外的任意一个字符
<代码> [^ abc]——比;除a b c之外任意字符代码>
<强> 1.2,匹配多个字符强>
*匹配0次或者多次
引用>
+匹配1次或者多次
& # 63;匹配0次或1次者
{男}匹配m次
{m, n}匹配m次到n次区间内的任意一次<强> 1.3,匹配位置强>
^匹配开始位置
引用>
美元的匹配结束位置
\一匹配开始位置
\ Z匹配结束位置
\ b匹配单词边界位置(一般用于首字母大写的匹配)
\ B匹配非单词边界问题<强> 1.4,转义强>
在正则表达式中有一类特殊字符需要转移,只需要在特殊字符之间加上\表示转移即可
<代码>。* + & # 63;^ $[]{}()| \ 代码>
<强> 1.5,子组强>
使用()可以为正则表达式建立内部分组,子组为正则表达式的一部分,可以看做一个内部整体。
在[61]:re.search (r”http (https | | ftp): \/\/\ w + \ \ w + \。(com | cn)”,“https://www.baidu.com”) .group (0) [61]:“https://www.baidu.com” 在[62]:re.search (r”http (https | | ftp): \/\/\ w + \ \ w + \。(com | cn)”,“https://www.baidu.com”) .group (1) [62]:“https”<强> 1.6,贪婪模式和非贪婪模式强>
正则表达式的重复匹配总是尽可能多的向后匹配更多的内容。贪婪模式包括:* + & # 63;{m, n}
非贪婪模式:尽可能少的匹配内容贪婪模式转换为非贪婪模式:* & # 63;+ & # 63;& # 63;& # 63;{m, n} & # 63;
在[106]:re.findall (r“ab + & # 63;”、“abbbbbbbb”) 出[106](“ab”): 在[107]:re.findall (r“ab # 63; & # 63;”、“abbbbbbbb”) 出[107]:[a]
regex=re.compile(模式、旗帜=0)#生成正则表达式对象以前>
<强> 2.2,findall 强>
re.findall(模式、字符串、pos、endpose) #从目标字符串中匹配所有符合条件的内容详Python正解则表达式模块