正则表达式的简明概要

	## **1. 正则表达式的简介**

1.1 正则表达式的概念

  • 正则表达式并不是Python的一部分,正则表达式是用来处理字符串的强大工具,拥有自己独特的语法以及一个独立的搜索引擎,效率上可能不如str自带的方法,但是功能十分强大

1.2 正则表达式的匹配过程

  • 依次拿出表达式和文本中的字符比较,如果每一字符都能匹配,则匹配成功。一旦有匹配不成功的字符,则匹配失败。如果表达式中有量词或边界,这个过程会稍微有些不同。

1.3 正则表达式的应用场景

  • 表单验证(例如身份证、手机号、邮箱等等)
  • 爬虫

2. 正则表达式对Python的支持

2.1 普通字符

  • 字母、数字、下划线以及没有特殊定义的符号,都是 “ 普通字符 ”
  • 正则表达式中的普通字符,在匹配的时候只匹配与自身想同的一个字符

2.2 元字符

在这里插入图片描述
一些无法书写或者具有特殊功能的字符,采用在前面加斜杠""进行转义的方法。
例如下表所示
在这里插入图片描述

2.3 预定义匹配字符集
所谓预定义字符就是正则表达式中为我们专门用来匹配格式化内容的字符,例如匹配数字用的 \d 和匹配空白字符的 \s 等等。我们可以利用预定义字符快速的匹配出一个字符串中符合要求的内容。预定义字符匹配的内容,同样也可以利用字符匹配的方式匹配出来,但是代码量会大一点

在这里插入图片描述
在这里插入图片描述
2.4 重复匹配
以上的表达式无论是匹配一种字符的样式,还是匹配多种字符其中任意一个表达式,都只能够匹配一次。但是 我们需要重复匹配的时候,例如:3666666这种情况,写成 \d \d \d \d \d \d 这样太麻烦。所以我们可以使用重复匹配的表达式
在这里插入图片描述
在这里插入图片描述

2.5 位置匹配和非贪婪匹配

非贪婪匹配

  • 正则表达式通常用于在文本中查找匹配的字符串。Python里面的数量词默认是贪婪的(只在少数语言里面是非贪婪的),总是尝试匹配尽可能多的字符。非贪婪匹配则正好相反,它是尽可能匹配少的字符

  • 检验数字的相关表达式
    在这里插入图片描述
    位置匹配

  • 对匹配的位置有特殊的要求,比如开头、结尾、单词之间等
    在这里插入图片描述
    特殊场景表达式
    在这里插入图片描述

3.re 模块常用方法

match()函数

  • match(pattern,string,flags = 0)
  • 第一个参数是正则表达式,如果匹配成功,则返回一个match对象,否则返回一个None
  • 第二个参数是要匹配的 字符串
  • 第三个参数是标志位用于控制正则表达式的 匹配方式。如是否区分大小写,多行匹配 等
    在这里插入图片描述
    complie(pattern,flags = 0)
    compile 是re 模块的工厂方法用于将字符串形式的正则表达式编译为 pattern 对象,可以实现更加效率的匹配。第二个参数flags 是匹配模式,使用compile() 完成一次转化后,再次使用该匹配模式的时候就不能转换了。 经过compile()转换的正则表达式对象也能只用普通的 re 模块

flag 匹配模式在这里插入图片描述
search(pattern,string,flags = 0)
在文本内查找,返回第一个匹配到的字符串。它的返回值类型和使用方法与match()函数是一样的,唯一区别就是查找的位置不用固定在文本的开头

findall(pattern,string,flags = 0)
作为 re 模块的三大搜索函数之一,findall()与match()和search()的不同之处在于,前两者都是单值匹配,找到一个就忽略会面,直接返回不再找了。而findall()是全文查找,它的返回值是一个匹配到的字符串的列表。这个列表没有group()方法,没有start、end、span,更不是一个匹配对象,仅仅是个列表,如果一项都没有匹配,则返回空的列表

split(pattern,string,flags = 0,maxsplit)
re 模块的split()方法和字符串的split()方法类似,都是利用特定的字符去分割字符串,但是re 模块的split()可以使用正则表达式,更加灵活、强大。 maxsplit参数用于指定分割的次数

sub(pattern,repl,string,count = 0,flags = 0)
sub()方法类似于字符串的replace()方法,用指定的内容替换匹配到的字符,可以指定替换次数

4.分组功能

Python的 re 模块有一个分组功能。所谓的分组就是去已经匹配到的内容,再筛选出需要的内容,相当于二次过滤。 实现分组用圆括号() ,而获取到分组的内容则是靠group()、groups()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值