Python进阶(七) -- 正则表达式

正则表达式

正则表达式又称为规则表达式.正则表达式通常用于检索、替换那些符合那些符合摸个规则的文本。

作用:

  • 测试字符串的某个模式,即数据有效性验证
  • 实现按照某种规则替换文本
  • 根据模式匹配从字符串中提取一个子字符串

构成:

  • 原子(普通字符,如英文字母)
  • 元字符(有特殊功能的字符)
  • 模式修正字符

匹配单字符

字符匹配范围
.匹配任意1个字符(除了\n)
[]匹配[]中列举的字符
\d匹配数字0-9
\D匹配非数字
\s匹配空白,即空格,\t-Tab键,\n换行
\S匹配非空白
\w匹配单词字符,即a-z,A-Z,0-9,_
\W匹配非单词字符

匹配多个字符

字符功能
*匹配前一个字符出现0次或多次,即可有可无
+匹配前一个字符出现1次或多次,即至少出现一次
匹配前一个字符出现0次或1次,即要么出现一次要么不出现
{m}匹配前一个字符出现m次
{m,n}匹配前一个字符出现m到n次

匹配开头结尾

字符功能
^匹配字符串开头
$匹配字符串结尾

注意:当^在[]中时表示取反:[^h]匹配不是h的字符

匹配分组

字符功能
|匹配左右任意一个表达式
(ab)将括号中的字符作为一个分组
\num引用分组num匹配到的字符串
(?P<name>)分组起别名
(?P=name)引用别名为name分组匹配到的字符串

re模块

match匹配

re.match(pattern,string,flags=0):

从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未成功返回None

  • pattern:正则模型
  • string:要匹配的字符串
  • faigs:匹配模式

match()方法一旦匹配成功,就是一个match object对象,有以下方法:

  • group():返回被re匹配的字符串
  • start():返回匹配开始的位置
  • end():返回匹配结束的位置
  • span():返回一个元组包含匹配(开始,结束)的位置

示例:

"""
1 导入模块
2. 通过match验证正则
3. 判断验证是否正确
4. 如果成功获取匹配结果
"""
# 1 导入模块
import re

str1 = 'hahazhong@qq.com'

# 2. 通过match验证正则
result = re.match('\w*@qq\.com', str1)
print(result)
# 3. 判断验证是否正确
# 4. 如果成功获取匹配结果
if result:
    print('匹配成功')
    print('匹配结果:', result.group())
else:
    print('匹配失败')

search搜索匹配

re.search(pattern,string,flags=0):

从需要检测的字符串中搜索一个符合规则的字符串,搜索成功返回一个对象,未成功返回None,其余和match()相同

match()和search()区别:match()只检测RE是否在string的开始位置匹配,search()会扫描整个string查找匹配

findall查找所有

re.findall(pattern,string,flags=0):

遍历匹配字符串中所有匹配的字符串,返回一个列表

如果匹配的正则里含有分组,则会返回分组内容打包的元组列表

sub替换

re.sub(pattern,newstring,string):

  • newstring:替换的字符串

使用re替换string中每一个匹配的子串返回替换后的字符串。

split分割

re.split(pattern,newstring,string):

按照正则拆分字符串,返回值为一个列表。

贪婪和非贪婪

Python中数量词是贪婪的(少数语言为非贪婪),总是尽可能多的字符;非贪婪则相反,总是尽可能匹配少的字符。

.+{m,n}后加上?,使贪婪变成非贪婪。

模式修正符:

re.S:使正则表达式中的.匹配到换行符

re.I:使正则表达式中忽略大小写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈钟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值