Python编程--正则基础(二)

简介: Python编程--正则基础(二)

接上文 Python编程--正则基础(一)https://developer.aliyun.com/article/1618836

4、finditer()函数

  • 原型
def finditer(pattern, string, flags=0)
  • 功能

与findall()类似,返回一个迭代器

  • 参数
    image.png
  • 代码
import re

res = re.finditer('\w', '12hsakda1')
print(res)
print(next(res))

for i in res:
    print(i)

5、split()函数
作用:切割字符串
原型:

def split(patter, string, maxsplit=0, flags=0)

参数

  1. pattern 正则表达式
  2. string 要拆分的字符串
  3. maxsplit 最大拆分次数 默认拆分全部
  4. flags 修正符

示例

import re
myStr = "asdas\rd&a\ts12d\n*a3sd@a_1sd"
#通过特殊字符 对其进行拆分 成列表
res = re.split("[^a-z]",myStr)
res = re.split("\W",myStr)

6、修正符

  • 作用

对正则进行修正
使用
search/match/findall/finditer 等函数 flags参数的使用

  • 修正符

re.I 不区分大小写匹配
re.S 使.可以匹配换行符 匹配任意字符

  • 使用

re.I

print(re.findall('[a-z]','AaBb'))
print(re.findall('[a-z]','AaBb', flags=re.I))

re.S

print(re.findall('<b>.*?</b>','<b>b标签</b>'))
print(re.findall('<b>.*?</b>','<b>b标\n签</b>', flags=re.S))

四、正则高级
1、分组&起名称

  • 概念

处理简单的判断是否匹配之外,正则表达式还有提取子串的功能,用()表示的就是要提取的分组

  • 代码
#给当前匹配到的结果起别名
s = '3G4HFD567'
re.match("(?P<value>\d+)",s)
print(x.group(0))
print(x.group('value'))
  • 说明

正则表达式中定义了组,就可以在Match对象上用group()方法提取出子串来
group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串
2、编译

  • 概念

当在python中使用正则表达式时,re模块会做两件事,一件是编译正则表达式,如果表达式的字符串本身不合法,会报错。另一件是用编译好的正则表达式提取匹配字符串

  • 编译优点

如果一个正则表达式要使用几千遍,每一次都会编译,出于效率的考虑进行正则表达式的编译,就不需要每次都编译了,节省了编译的时间,从而提升效率
compile()函数

  • 原型
def compile(pattern, flags=0)

作用
将pattern模式编译成正则对象
参数
image.png

import re

re_phone = re.compile(r"(0\d{2,3}-\d{7,8})")
print(re_phone, type(re_phone))

编译后其他方法的使用
原型

def match(self, string, pos=0, endpos=-1)
def search(self, string, pos=0, endpos=-1)
def findall(self, string, pos=0, endpos=-1)
def finditer(self, string, pos=0, endpos=-1)

参数

image.png

示例

s1 = "lucky's phone is 010-88888888"
s2 = "kaige's phone is 010-99999999"
ret1 = re_phone.search(s1)
print(ret1, ret1.group(1))
ret2 = re_phone.search(s2)
print(ret2, ret2.group(1))

3、贪婪与非贪婪

  • 贪婪模式

贪婪概念:匹配尽可能多的字符
.+ 匹配换行符以外的字符至少一次
.* 匹配换行符以外的字符任意次

  • 实例
res = re.search('<b>.+</b>', '<b></b><b>b标签</b>')
res = re.search('<b>.*</b>', '<b>b标签</b><b>b标签</b><b>b标签</b><b>b标签</b>')
  • 非贪婪模式

非贪婪概念:尽可能少的匹配称为非贪婪匹配,?、+?即可
.+? 匹配换行符以外的字符至少一次 拒绝贪婪
.
? 匹配换行符以外的字符任意次 拒绝贪婪
实例

res = re.search('<b>.+?</b>', '<b>b标签</b><b>b标签</b>')
res = re.search('<b>.*?</b>', '<b>b标签</b><b>b标签</b><b>b标签</b><b>b标签</b>')

lucky ↩︎

相关文章
|
1天前
|
存储 数据可视化 Python
Python编程中的数据可视化技术
在数据驱动的世界中,将复杂的数据集转换为易于理解的视觉表示形式至关重要。本文将深入探讨如何使用Python进行数据可视化,包括选择合适的库、处理数据和设计有效的图表。我们将一起学习如何让数据讲故事,并确保你的信息传达清晰且有影响力。
|
1天前
|
网络协议 IDE iOS开发
Python编程---简单的聊天工具
Python编程---简单的聊天工具
12 2
|
1天前
|
小程序 IDE 开发工具
Python编程--个人信息修改小程序
Python编程--个人信息修改小程序
10 2
|
1天前
|
存储 uml iOS开发
Python编程:《外星人入侵》(一)
Python编程:《外星人入侵》(一)
|
1天前
|
IDE 开发工具 Python
Python扑克游戏编程---摸大点
Python扑克游戏编程---摸大点
|
1天前
|
Python
Python编程--解压缩文件
Python编程--解压缩文件
|
1天前
|
IDE 开发工具 数据安全/隐私保护
Python编程--实现用户注册信息写入excel文件
Python编程--实现用户注册信息写入excel文件
|
1天前
|
Python
Python编程---双色球选购程序
Python编程---双色球选购程序
|
1天前
|
存储 Python Perl
Python编程--正则基础(一)
Python编程--正则基础(一)
|
1天前
|
存储 安全 网络安全
Python编程--使用PyPDF解析PDF文件中的元数据
Python编程--使用PyPDF解析PDF文件中的元数据