re正则入门

re模块是Python中的一个内置模块,用于支持正则表达式的操作。正则表达式是一种描述字符串模式的语法,它能够用来匹配、搜索和替换字符串。re模块提供了一系列函数,可以用来执行这些操作,如正则表达式的匹配、查找、替换等。通过re模块,可以更加灵活和高效地处理字符串。

re模块经常被用来处理,爬虫中遇到的网站解析后的字符串信息,非常重要和高效

一,re模块主要实现的三个功能:

1,匹配

re.search()

搜索整个字符串,找到第一个匹配的子串。

复制代码
result = re.search(r'abc','0abcababcabcd')
print(result,result.start(),result.end(),result.group())
# 匹配到第一个位置
# 返回match

re.match()

从开头开始匹配,搜索整个字符串,找到第一个匹配的字符串,匹配字符串的开始部分。

复制代码
# result=re.match(r'ab','ababcabcd')
# print(result)
# 从开头匹配,开头匹配不成功,就是None

re.fullmatch ()

尝试从字符串的开头到结尾完全匹配正则表达式,如果匹配成功则返回一个 Match 对象,否则返回 None

复制代码
# result=re.fullmatch(r'ab','ababcabcd')
# print(result)

re.findall()

返回匹配到的所有内容(字符串),返回列表

re.finditer()

返回一个迭代器,迭代器中的内容是一个个的match

#可以通过遍历,得到match中的具体内容(group)

复制代码
# result = re.findall(r'abc','Abcababcabcd',re.I)
# print(result)
# 返回匹配到的所有内容(字符串),返回列表

# result = re.finditer(r'abc','abcabaaabcdeababc')
# # print(result)
# for data in result:
#     print(data.group())
# 返回一个迭代器,迭代器中的内容是一个个的match
# 可以通过遍历,得到match中的具体内容(group)

2,替换

re.sub()

re.subn()

复制代码
# result = re.sub(r'abc','ghy','abcahabdabcdeabc',count = 1)
# print(result)
# 返回替换后的字符串,可以指定替换次数,默认匹配到的内容全替换


# result = re.subn(r'abc','ghy','abcahabdabcdeabc')
# print(result)
# 返回元组,第一个参数是替换后的字符串,第二个参数是替换的次数
# 替换次数可以自定义

3,分割

re.split()

复制代码
# result = re.split(r'a\wc','ababcahabcdabdeabc',maxsplit=2)
# print(result)
# 以匹配到的内容为'刀刃',切割
# 返回分割后的字符串列表
# 可以通过maxsplit 来指定要分割几次

二,特殊符号

1. wds.^$

\w 匹配数字字母下划线

\W 非 数字字母下划线

\d 仅数字

\D 非数字

\s 空 (制表符,换行符,空格)

\S 非空

. 所有

复制代码
 ^ : 以什么为开头
 $ :以什么为结尾
复制代码
# result = re.findall('\w','adaidh _+*-/')
# result = re.findall('\W','adaidh _+*-/')

# result = re.findall('\d','abc125 *-+/\t\n')
# result = re.findall('\D','abc125 *-+/\t\n')

# result = re.findall('\s',' a\t\n+-*/54')
# result = re.findall('\S',' a\t\n+-*/54')

# result = re.findall('.',' a\t\n+-*/54',re.S)



# result = re.findall(r'^ab','abcd\nabcdab',re.M)

# result = re.findall(r'ab$','abca564ab')

2.*+?

贪婪模式:尽可能匹配多个

* 代表有>=0个

+ 代表有>=1 个

? 代表有 1 个 或者 0个 (*和+的结合)

非贪婪:尽可能匹配少的个数

在贪婪模式后加上一个? 即转为非贪婪模式

复制代码
# result = re.findall('\d*','123ada')
# result = re.findall('\d*?','123ada')

# result = re.findall('\d+','123ada')
# result = re.findall('\d+?','123ada')

# result = re.findall(r'\d?','123456789')
# result = re.findall(r'\d??','123456789')

3.{ },( ),[ ]

复制代码
# {n}  匹配n个
#{n,m} 匹配n个或者m个,贪婪模式下匹配多的,非贪婪模式匹配少的
# result = re.findall(r'\d{2,4}?','123456987')

#[]

# result = re.findall(r'[123]','123456987')

# result = re.findall(r'[1-6]','123456987')

# 分组()
相关推荐
程序员小崔日记1 小时前
一篇文章彻底搞懂 MySQL 和 Redis:原理、区别、项目用法全解析(建议收藏)
redis·mysql·项目实战
IvorySQL2 小时前
PostgreSQL 技术日报 (3月5日)|规划器控制力升级,内核能力再进阶
数据库·postgresql·开源
武子康2 小时前
大数据-241 离线数仓 - 实战:电商核心交易数据模型与 MySQL 源表设计(订单/商品/品类/店铺/支付)
大数据·后端·mysql
数据组小组16 小时前
免费数据库管理工具深度横评:NineData 社区版、Bytebase 社区版、Archery,2026 年开发者该选哪个?
数据库·测试·数据库管理工具·数据复制·迁移工具·ninedata社区版·naivicat平替
用户83071968408221 小时前
MySQL 查询优化 30 条封神技巧:用好索引,少耗资源,查询快到飞起
mysql
Nyarlathotep01131 天前
事务隔离级别
sql·mysql
悟空聊架构1 天前
基于KaiwuDB在游乐场“刷卡+投币”双模消费系统中的落地实践
数据库·后端·架构
IvorySQL1 天前
PostgreSQL 技术日报 (3月4日)|硬核干货 + 内核暗流一网打尽
数据库·postgresql·开源
Nyarlathotep01131 天前
SQL的事务控制
sql·mysql
进击的丸子1 天前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端