正则表达式是一个很强大的字符串处理工具 , 几乎任何关于字符串的操作都可以使用正则表达式来完成 , 作为一个爬虫工作者 , 每天和字符串打交道 , 正则表达式更是不可或缺的技能 。
正则表达式在不同的语言中使用方式不尽相同 , 不过只要学会了任意一门语言的正则表达式用法 , 其他语言中大部分也只是换了个函数的名称而已 , 本质都是一样的 。
注:本文摘自 i 春秋社区(bbs.ichunqiu.com) , 欢迎更多优秀作者去社区投稿 , 帮助更多萌新们快速掌握新技能 。文章阅读用时约10分钟 。
文章插图
原子
原子是正则表达式中最基本的单位 , 每个正则表达式中至少要包含一个原子 。常见的原子类型:
- 普通字符作为原子
- 非打印字符作为原子
- 通用字符作为原子
- 原子表
演示代码:
import re#引用restring = "shentouyun"#定义整段 , 普通字符作为原子pat = "yun"#提取yunret = re.search(pat,string)#第一个参数为提取 , 第二个为整个字段print(ret)#输出输出
<_sre.SRE_Match object; span=(7, 10), match='yun'>非打印字符作为原子
什么是非打印字符 , 如n,t(换行 , 制表) , 代表一些操作的字符也可以作为原子
操作代码与小知识
string1 = '''shentouyunnuibi'''pat1 = 'n'ret=re.search(pat1,string1)print(ret)运行后
<_sre.SRE_Match object; span=(10, 11), match='n'>小知识
#在这里解释一个基础 , 我没有提到过string = '''shentouyunnuibi'''print(string)#这段代码里 , 其特点为string被三引号包裹 , 并在代码里实现换行其运行结果shentouyunnuibi#实现了一个n的操作其代码等同于string ="shentouyunnnuibi"print(string)
通用字符作为原子
什么是通用字符?
1. w匹配任意一个字母数字或下划线;
2. W匹配除去字母数字或下划线任意一个字符;
3. d匹配十进制数;
4. D除十进制以外的任意一个字符;
5. s匹配一个空白字符;
6. S除去空白字符 。
简单的例子
string1 = "shentouyun3215454biji"pat1 = 'dddd'#匹配四个十进制数ret=re.search(pat1,string1)print(ret)运行后
<_sre.SRE_Match object; span=(10, 14), match='3215'>也可以混合使用
string1 = "shentouyun3215454biji"pat1 = 'wdddd'#匹配一个字母+匹配四个十进制数ret=re.search(pat1,string1)print(ret)运行后
<_sre.SRE_Match object; span=(9, 14), match='n3215'>没有符合格式的 , 如空白就不会匹配出来 , 这里不过多的描述 , 占用空间 。
原子表
[ots]任意的提取一个原子出来 , 直接任意选择一个原子表原子 , 如下:
string1 = "shentouyun3215454biji"pat1 = "shen[otoasdjojds]ou"ret=re.search(pat1,string1)print(ret)运行后
【Python正则表达式详解】<_sre.SRE_Match object; span=(0, 7), match='shentou'>只从原子表中选择一个原子 , 其原子表内原子地位平等 。
非原子表
符号^ 英文状态下的shift+6
字符串里出现了非原子表 , 返回None , 其代码如下:
string1 = "shentouyun3215454biji"pat1 = "shen[^tun]ou"#shen后面应该是匹配t结果原子表里出了[tun]三个原子外其他的原子都可以匹配#显然本代码中的原子是无法匹配的ret=re.search(pat1,string1)print(ret)返回如下:
None如果正常运行非原子表外的字符如string1字符串中截取的shen后面是t , 在非原子表上 , 没有出现t , 则返回shent 。
string1 = "shentouyun3215454biji"pat1 = "shen[^asd]"#为了更加直白我把ou两个字符去掉了ret=re.search(pat1,string1)print(ret)运行后
<_sre.SRE_Match object; span=(0, 5), match='shent'>元字符
特殊含义的字符
所谓的元字符 , 就是正则表达式中具有一些特殊含义的字符 , 比如重复N多次前面的字符 。
文章插图
"."除换行外任意一个字符
推荐阅读
- Python appium搭建app自动化测试环境
- 2个实例搞懂Python循环嵌套——九九乘法表以及质数的索引
- python3+ 和 Python2+的一些区别
- 讲讲Python爬虫绕过登录的小技巧
- 一文让你理解 Lambda 表达式
- 微信“拍一拍”,竟然可以使用Python实现
- Python中的日期操作总结大全
- 如何用Python爬取移动端数据
- 初学 Python 需要安装哪些软件?
- 利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例