python正则_Python 正则表达式

正则表达式

  • 官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
  • 在线测试工具http://tool.chinaz.com/regex/
  • 处理同一位置上,可以出现的字符范围
  • 字符组概念及表示方法 : [字符组]
  • 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示
  • 字符分为很多类,比如数字、字母、标点等等。
  • 假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一。
13db9faea98a931b13c16d3bd5b73379.png

字符

7935a44c23aa3d95ba21b85c073ddd8a.png

量词

d7044c50f683336cca4d55dcee34ec28.png

.^$混用

bc9b26cddb78fdd1b10c794578219ef8.png

*+?{}混用

738137c5270d8d0fb0b805ad18558c35.png

PS:前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配

3b4be0dada7db58feeab5f27c8ba4474.png

字符集[][^]

b3d6c7931c8c9d637b22f0884aa023dd.png

分组 ()与 或 |[^]

身份证号码是一个长度为15或18个字符的字符串,如果是15位则全部有数字组成,首位不能为0;如果是18位,则前17位全部是数字,末位可能是数字或x,下面我们尝试用正则来表示

f978b5f4789edee6fc0b6fdc133fb76b.png

转义符

在正则表达式中,有很多有特殊意义的是元字符,比如d和s等,如果要在正则中匹配正常的"d"而不是"数字"就需要对""进行转义,变成''。

在python中,无论是正则表达式,还是待匹配的内容,都是以字符串的形式出现的,在字符串中也有特殊的含义,本身还需要转义。所以如果匹配一次"d",字符串中要写成'd',那么正则里就要写成"d",这样就太麻烦了。这个时候我们就用到了r'd'这个概念,此时的正则是r'd'就可以了。

f20cbf1c5058d98e2bc2462e43dd3a35.png

贪婪匹配

贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

268f302455314db7ba08c0d883c539cc.png

几个常用的非贪婪匹配Pattern

*? 重复任意次,但尽可能少重复

+? 重复1次或更多次,但尽可能少重复

?? 重复0次或1次,但尽可能少重复

{n,m}? 重复n到m次,但尽可能少重复

{n,}? 重复n次以上,但尽可能少重复

*?的用法

. 是任意字符

* 是取 0 至 无限长度

? 是非贪婪模式。

何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:

.*?x

就是取前面任意长度的字符,直到一个x出现

58df41d3e4a5f954875d9572299bc0b2.png

#Python# #笨办法学Python 3# #Python入门推荐#

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值