代码如下:
string1 = "shentouyun3215454biji"pat1 = "shen.ou"#这里.匹配除了换行符外的任意字符ret=re.search(pat1,string1)print(ret)运行结果
<_sre.SRE_Match object; span=(0, 7), match='shentou'>当然你也可以多匹配些 , 比如多些点点 。
string1 = "shentouyun3215454biji"pat1 = "shen......"ret=re.search(pat1,string1)print(ret)运行后
<_sre.SRE_Match object; span=(0, 10), match='shentouyun'>开始位置^与结束位置$
string1 = "shentouyun3215454biji"pat1 = "^s..."ret=re.search(pat1,string1)print(ret)运行后<_sre.SRE_Match object; span=(0, 4), match='shen'>因为s是开始 , 也就是“排头”结束位置也同理 。
string1 = "shentouyun3215454biji"pat1 = "b...$"ret=re.search(pat1,string1)print(ret)运行后<_sre.SRE_Match object; span=(17, 21), match='biji'>*""0次1次多次**
string1 = "shentouyun3215454biji"pat1 = "shen.*"ret=re.search(pat1,string1)print(ret)运行后<_sre.SRE_Match object; span=(0, 21), match='shentouyun3215454biji'>为什么会全匹配 , 看*号的定义为多次 , 咱们的"."表示除了换行外全匹配 , 两者一配合 。
+号与?号
+匹配多次 , 正常显示无法匹配0次 , 演示错误例子 。
string1 = "shentouyun3215454biji"pat1 = "a+"ret=re.search(pat1,string1)print(ret)None演示正确例子
string1 = "aaaaaaaaaaaa"pat1 = "a+"ret=re.search(pat1,string1)print(ret)<_sre.SRE_Match object; span=(0, 12), match='aaaaaaaaaaaa'>问号就更好弄了
问号直接演示错误例子 , 无法显示多次
string1 = "aaaafsedfsfdffasafadaaaaaaaa"pat1 = "a?"ret=re.search(pat1,string1)print(ret)<_sre.SRE_Match object; span=(0, 1), match='a'>{n}与{n,}
string1 = "aaaa"pat1 = "a{4}"ret=re.search(pat1,string1)print(ret)<_sre.SRE_Match object; span=(0, 4), match='aaaa'>如果换成3呢
<_sre.SRE_Match object; span=(0, 3), match='aaa'>打印了三次 , 成功演示了什么叫做至少 , 当然你多了不行 , 改成5试试 。
None{n,m}至少多少次 , 至多多少次
string1 = "aaaa"pat1 = "a{3,5}"ret=re.search(pat1,string1)print(ret)<_sre.SRE_Match object; span=(0, 4), match='aaaa'>模式修正符
所谓的模式修正符 , 即可以在不改变正则表达式的情况下 , 通过模式修正符改变正则表达式的含义 , 从而实现一些匹配结果的调整等功能 。
模式修正符有什么?
I忽略大小写
M多行匹配
L本地化识别匹配
U unicode编码
S让 , 匹配包括换行符
错误代码演示
string = "ShenTouYun"pat="shen"ret = re.search(pat,string)print(ret)返回None , 因为默认有大小写限制 , 引用一下I就可以了 。
string = "ShenTouYun"pat="shen"ret = re.search(pat,string,re.I)print(ret)运行结果
<_sre.SRE_Match object; span=(0, 4), match='Shen'>
贪婪模式与懒惰模式
贪婪模式的核心点就是尽可能多的匹配
懒惰模式的核心就是尽可能少的匹配
贪婪模式
string = "SheSnTouYunYS"pat="s.*S"ret = re.search(pat,string,re.I)print(ret)运行结果
<_sre.SRE_Match object; span=(0, 13), match='SheSnTouYunYS'>贪婪模式与懒惰模式有什么用呢?
看对比
string = "SheSnTouYunYS"pat="s.*S"#贪婪模式找到最后一个spat1="s.*?S"#懒惰模式,特征为? , 找到第一个s就不往下找了ret = re.search(pat,string,re.I)ret1 = re.search(pat1,string,re.I)print(ret)print(ret1)运行结果
<_sre.SRE_Match object; span=(0, 13), match='SheSnTouYunYS'><_sre.SRE_Match object; span=(0, 4), match='SheS'>
正则表达式函数
1、re.match( )函数从头开始匹配
2、re.search( )函数从任何地方开始匹配
3、全局匹配函数
match函数演示
string1 = "a**fewfaaa"pat1 = "a"ret=re.match(pat1,string1)print(ret)运行结果可匹配<_sre.SRE_Match object; span=(0, 1), match='a'>不是第一个开始匹配
string1 = "a**fewfaaa"pat1 = "d"ret=re.match(pat1,string1)print(ret)运行结果不可匹配None
全局匹配函数
推荐阅读
- Python appium搭建app自动化测试环境
- 2个实例搞懂Python循环嵌套——九九乘法表以及质数的索引
- python3+ 和 Python2+的一些区别
- 讲讲Python爬虫绕过登录的小技巧
- 一文让你理解 Lambda 表达式
- 微信“拍一拍”,竟然可以使用Python实现
- Python中的日期操作总结大全
- 如何用Python爬取移动端数据
- 初学 Python 需要安装哪些软件?
- 利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例
