美文网首页Python爬虫
六. 正则表达式

六. 正则表达式

作者: 橄榄的世界 | 来源:发表于2018-02-14 23:12 被阅读0次

1. 正则表达式常用符号

1)一般字符

字符 含义 举例 匹配结果
. 匹配任何单个字符(不包括换行符\n) a.b 匹配"abc,a&c"等,但不包括换行符。
\ 转义字符(将特殊含义的字符转成原来的意思) . 匹配为“.”。
[...] 字符集,相当于在中括号中任选一个 a[bcd] 匹配为“ab”,“ac”,“ad”。

2 ) 预定义字符集

字符 含义 等价结果
\d 匹配一个数字字符 [0-9]
\D 匹配一个非数字字符 [^0-9]
\s 匹配任何空白字符,包括空格、制表符、换页符等 [\f\n\r\t\v]
\S 匹配任何非空白字符 [^\f\n\r\t\v]
\w 匹配包括下划线的任何单词字符 [A-Za-z0-9_]
\W 匹配任何非单词字符 [^A-Za-z0-9_]

实战中常用‘\d+’来匹配一个字符1或无限次,例如可以匹配“字数 345”中的“345”。

常见空白字符 含义 ASCII码值
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011

3 ) 数量词

数量词 含义 举例 匹配结果
* 匹配前一个字符0或无限次 ab*c 匹配ac,abc,abbc,abbbc等
+ 匹配前一个字符1或无限次 ab+c 匹配abc,abbc,abbbc等
? 匹配前一个字符0或1次 ab?c 匹配ac,abc
{m} 匹配前一个字符m次 ab{3}c 匹配abbbc
{m,n} 匹配前一个字符m至n次 ab{1,3}c 匹配abc,abbc,abbbc

4 ) 边界匹配

边界匹配符 含义 举例 匹配结果
^ 匹配字符串开头 ^abc 匹配以abc开头的字符串
$ 匹配字符串结尾 abc$ 匹配以abc结尾的字符串
\A 匹配字符串开头 \Aabc 匹配以abc开头的字符串
\Z 匹配字符串结尾 abc\Z 匹配以abc结尾的字符串

边界匹配符在爬虫实战中较少使用。

最后介绍爬虫实战中常用的(.?),"()"表示返回结果,".?"为非贪婪算法,匹配任意字符。

符号 含义 举例 匹配结果
(.*?) 匹配任意字符 xx(.*?)xx 匹配"xxIxxjshdxxlovexxsffaxxpythonxx"中的"I","love","Python"。

举例:

import re
a = 'xxIxxjshdxxlovexxsffaxxpythonxx'
infos = re.findall('xx(.*?)xx',a)
print(infos)

结果:
['I', 'love', 'python']

2. re模块函数及标志修饰符

1) re模块函数

函数名 语法 含义
search() re.search(pattern,string,flags=0) 匹配并提取第一个符合规律的内容,返回一个正则表达式对象。
sub() re.sub(pattern,repl,string,count=0,flags=0) 用于替换字符串中的匹配项。repl:替换后的字符串。string:替换前的字符串。
findall() re.findall(pattern,string,flags=0) 匹配并提取所有符合规律的内容,以列表形式返回结果。

pattern:匹配的正则表达式。
string:匹配的字符串。
flags:标志位,对应标志修饰符。
repl:替换后的字符串。
count:匹配后替换的最大次数,默认0表示替换所有的匹配。

sub()类似于字符串的replace()函数,但sub()函数更加灵活,可以使用正则表达式进行匹配,但replace()做不到。fjndall()在爬虫实战中使用得最多。

2) re标志修饰符

标志修饰符 含义 说明
re.I 对大小写不敏感 例如a可以匹配a或A。
re.L 做本地化识别(Local-aware)的匹配
re.M 多行匹配,影响^ 和 $
re.S 可匹配包括换行符在内的所有字符,实现跨行匹配 最常用
re.U 根据unicode字符集解析字符,此标志影响\w \W \b \B。
re.X 该标志给予更灵活的格式,以便将正则表达式写得更容易理解。

相关文章

  • 【珍藏版】长文详解python正则表达式

    一、 ​正则函数 二、re模块调用 三、贪婪模式 四、分组 五、正则表达式修饰符 六、正则表达式模式 七、常见的正...

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

网友评论

    本文标题:六. 正则表达式

    本文链接:https://www.haomeiwen.com/subject/nfxytftx.html