正则表达式(Regluar Expressions)又称规则表达式,在代码中常简写为REs,regexes或regexp(regex patterns)。它本质上是一个小巧的、高度专用的编程语言。 通过正则表达式可以对指定的文本实现
匹配测试、内容查找、内容替换、字符串分割 等功能。
re模块介绍
Python中的re模块提供了一个正则表达式引擎接口,它允许我们将正则表达式编译成模式对象,然后通过这些模式对象执行模式匹配搜索和字符串分割、子串替换等操作。re模块为这些操作分别提供了模块级别的函数以及相关类的封装。
正则表达式一些小规则
①元字符

②量词

③贪婪和非贪婪匹配
总是在量词范围内尽量多匹配 - 贪婪
总是在量词范围内尽量少匹配 - 惰性
.*?x 匹配任意内容任意次数 遇到x就停止
.+?x 匹配任意内容至少1次 遇到x就停止
④转义符问题
. 有特殊的意义,取消特殊的意义
取消一个元字符的特殊意义有两种方法
在这个元字符前面加
对一部分字符生效,把这个元字符放在字符组里
[.()+?*]
Python --> re模块
findall
会优先显示分组内的内容
*****取消优先显示(?:正则)
search
只能返回第一个符合条件的项
得到的结果需要.group取值
默认获取完整的匹配结果
通过group(n)取第n个分组中的内容
# search 还是按照完整的正则进行匹配,显示也显示匹配到的第一个内容,但是我们可以通过给group方法传参数
# 来获取具体文组中的内容
ret = re.search('9(d)(d)','19740ash93010uru')
print(ret) # 变量 -- > <re.Match object; span=(1, 4), match='974'>
if ret:
print(ret.group()) # --> 974
print(ret.group(1)) # --> 7
print(ret.group(2)) # --> 4
# findall
# 取所有符合条件的,优先显示分组中的
# search 只取第一个符合条件的,没有优先显示这件事儿
# 得到的结果是一个变量
# 变量.group() 的结果 完全和 变量.group(0)的结果一致
# 变量.group(n) 的形式来指定获取第n个分组中匹配到的内容
# 加上括号 是为了对真正需要的内容进行提取
ret = re.findall('<w+>(w+)</w+>','<h1>askh930s02391j192agsj</h1>')
print(ret) # --> ['askh930s02391j192agsj']









