Python-正则表达式

概述

  • 正则表达式,Regular Expression,缩写为regex、regexp、RE等。
  • 正则表达式是文本处理极为重要的技术,用它可以对字符串按照某种规则进行检索、替换。
  • 1970年代,Unix之父Ken Thompson将正则表达式引入到Unix中文本编辑器ed和grep命令中,由此正则表达式普及开来。
  • 1980年后,perl语言对Henry Spencer编写的库,扩展了很多新的特性。1997年开始,Philip Hazel开发出了PCRE(Perl Compatible Regular Expressions),它被PHP和HTTPD等工具采用。
  • 正则表达式应用极其广泛,shell中处理文本的命令、各种高级编程语言都支持正则表达式。
  • 参考:https://www.w3cschool.cn/regex_rmjc/

分类

BRE

  • 基本正则表达式,grep、sed、vi等软件支持。vim有扩展

ERE

  • 扩展正则表达式,egrep(gerp -E)、sed -r等

PCRE

  • 几乎所有高级语言都是PCRE的方言或者变种,Python从1.6开始就使用SRE正则表达式引擎,可以认为是PCRE的子集,见模块re

基本语法

元字符 metacharacter

在这里插入图片描述

转义

  • 凡是在正则表达式中有特殊意义的符号,如果想使用它的本意,需使用\转义
  • 反斜杠自身,得使用\
  • \r,\n代表回车、换行

重复

在这里插入图片描述

练习

  • 1、匹配手机号码
    字符串为“手机号码13899879021”
  • 2、匹配中国坐骑
    字符串为“号码027-65666837、0543-5837291”
  • 代码实现
  • 1、\d{11}
  • 2、\d{3,5}-\d{7,8}

or匹配与分组

在这里插入图片描述

  • 注意:
    分组和捕获是同一个意思
    使用正则表达式,能用简单表达式,就不要复杂的表达式

零宽度断言

在这里插入图片描述

  • 注意:
    断言不占分组号。断言如同条件,只是要求匹配必须满足断言的条件

注释

在这里插入图片描述

贪婪与非贪婪

  • 默认是贪婪模式,也就是说尽量多匹配更长的字符串
  • 非贪婪很简单,在重复的符号后面加上一个?问号,就尽量的少匹配了
    在这里插入图片描述
    在这里插入图片描述

引擎选项

在这里插入图片描述

工作模式

单行模式

  • . 点号可以匹配所有字符,包括换行符
  • ^ 表示整个字符串的开头
  • $ 表示整个字符串的结尾

多行模式

  • . 点号可以匹配除了换行符之外的字符,多行不影响 . 点号
  • ^ 表示行首,$ 表示行尾,不过这里的行是每一行

默认模式

  • 可以看做待匹配的文本是一行,不能看做多行
  • . 点号不能匹配换行符
  • ^$ 表示行首和行尾,而行首行尾就是整个字符串的开头和结尾

总结

  • 简单讲,单行模式只影响 . 点号行为,多行模式重新定义行影响了 ^$
  • 字符串看不见的换行符,\r\n会影响e$的测试,e$ 只能匹配e\n

举例

very very happy
harry key

  • 上面2行happy之后,有可能是\r\n结尾
  • y$ 单行匹配key的y,多行匹配happy和key的y(这里的匹配是全局匹配)
  • .$ 指的是此行的结尾,而默认模式和单行模式都是一行,指的是这个大字符串的最后一个字符,就是key的y
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值