Python爬虫系列:正则表达式(2)
2021年07月02日 23:51 __ _ _ _ _

一个股票作手必须与自己内心的敌人做斗争,这些敌人会让他付出昂贵的代价。
——《股票大作手回忆录》

之前关于Python的文章一直处于断更状态,想着也是鸽了很久,这不,小编准备 给补上 了~
关于上次Python爬虫的文章: Python爬虫系列:正则表达式(1)
目录:
raw string原生字符串类型
关于正则库常用的函数
常用函数简介
1.raw string
在正则库中,常用原生字符串表示字符串。
那么什么是 原生字符串 呢,字面意思是原生的,在Python中为 不含转义符的字符串 。
常见形式为: r’text’ ,即在字符串之前添加一个 大写或小写的r。例如:r’[1-9]\d{5}’ 。
那么字符串和原生字符串有哪些区别呢?
String类型因为 斜杠被表示为转义 ,因此在显得更加繁琐。
比如:
'[1-9]\\d{5}''\\d{3}=\\{8}|\\d{4}-\\d{7}'
关于 原生字符串和字符串之间的区别 ,小编在这里给大家举例:

当我们用字符串表示\n时就需要用两个斜杠,表示起来不是很方便。即: **当正则表达式包含 <转义符>时,使用raw string。 **
2.正则库常用函数
当我们在 爬取特定内容 时,不可避免的需要用到正则库,其中正则库中的函数可以帮助我们做很多事,下面将列举最常用到的 正则库的主要功能函数
:
re.search() 在一个字符串中搜索匹配正则表达式的第一个位置re.match() 从一个字符串的开始位置起匹配正则表达式,返回match对象re.findall() 搜索字符串,以列表类型返回全部能匹配的子串re.split() 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素都是match对象re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
To :如上列举了6个最常用的正则主要功能函数,别看函数很简单哦,用起来还是很需要熟练度的哦。
3.常用函数简介
1.search函数
简介:
re.search(pattern,string,flags=0)#在一个字符串中搜索匹配正则表达式的第一个位置
其中,相关参数表示为:
pattern :正则表达式的字符串或原生字符串表示
string :待匹配字符串
flags :正则表达式使用时的控制标记
这里提到一个新概念 标记 ,在我们要提取的信息中,可能只会抓取部分字符,这时候我们便可以用标记,然后抓取从标记开始的部分。
| 常用标记 | 说明: |
|---|---|
| re.I | 也叫re.IGNORECASE 忽略正则表达式的大小写,[A-Z]能匹配小写字符 |
| re.M | re.MULTILINE 正则表达式中的^操作符能够将给定字符串的每行当作匹配开始 |
| re.S | re.DOTALL 正则表达式中的.操作符能够匹配所有字符,默认匹配除换行外的所有字符 |
例子:
import rematch=re.search(r'[1-9]\d{5}' , 'BIT 100081')if match: print(match.group(0))
运行结果:
** 2.match函数 **
简介:
re.match(pattern,string,flags=0) #从一个字符串的开始位置起匹配正则表达式,返回match对象
其中,相关参数表示为:
pattern :正则表达式的字符串或原生字符串表示
string :待匹配字符串
flags :正则表达式使用时的控制标记
例子:
import rematch=re.match(r'[1-9]\d{5}' , '100081 BIT')if match: print(match.group(0))
运行结果:
** 3.findall函数 **
简介:
re.findall(pattern,string,flags=0)#搜索字符串,以列表类型返回全部能匹配的子串
相关参数和之前函数的参数相差不大,这里不展示了哈。
例子:
import rels=re.findall(r'[1-9]\d{5}' , 'BIT100081 TSU100084')print(ls)
运行结果:
** 4.split函数 **
简介:
re.split(pattern,string,maxsplit=0,flags=0) #将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
其中,相关参数表示为:
pattern :正则表达式的字符串或原生字符串表示
string :待匹配字符串
maxsplit :最大分割数,剩余部分作为最后一个元素输出
flags :正则表达式使用时的控制标记
例子:
import rels=re.split(r'[1-9]\d{5}' , 'BIT100081 TSU100084')print(ls)
运行结果:

当我们在函数中调用 maxsplit参数 时,如下:
import rels=re.split(r'[1-9]\d{5}' , 'BIT100081 TSU100084',maxsplit=1)print(ls)
运行结果:
5.finditer函数
简介:
re.finditer(pattern,string,flags=0) #搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
例子:
import refor m in re.finditer(r'[1-9]\d{5}' , 'BIT100081 TSU100084'): if m: print(m.group(0))
运行结果:
** 6.sub函数 **
简介:
re.sub(pattern,repl,string,count=0,flags=0)#在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
其中,相关参数表示为:
pattern : 正则表达式的字符串或原生字符串表示
repl : 替换匹配字符串的字符串
string :待匹配字符串
count :匹配的最大替换次数
flags :正则表达式使用时的控制标记
例子:
import remat=re.sub(r'[1-9]\d{5}' , ':zipcode','BIT100081 TSU100084')print(mat)
运行结果 (返回类型):

关于更多正则库的用法,还待后续…


为你,千千万万遍.
往期推荐:
六月碎碎念 || 半年已逝 2021-07-01
【算法系列01】:快速排序&&归并排序 2021-05-13
一键三连,就差你了
预览时标签不可点
阅读
__









