一文彻底解读Python正则表达式,小白也能学得会 !!

前言

正则表达式(Regular Expression),又称规则表达式,它不是某个编程语言所特有的,是计算机科学的一个概念,通常被用来检索和替换符合某些规则的文本。

1. 正则表达式

行定位符
1.^
表示行的开始

2.$
表示行的结尾

举例

^py该表达式表示要匹配字符串py的开始位置是行头,如py equal python可以匹配而python equal py不能匹配

py$后者可以匹配,前者不能,如果要匹配的字符串可以出现在字符串的任意部分,那么可以直接写成py

【文末领取全套Python学习资源】

2. 元字符

常见的元字符
元字符 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

限定符

如果想匹配特定数量的数字,需要使用限定符(指定数量的字符)来实现,例如匹配8位QQ号就是:^\d{8}$

^表示行的开始,\d表示匹配数字,{8}就是限定符表示匹配前面的字符8次,$表示行的结束

常用的限定符

限定符 说明 举例
? 匹配前面的字符零次或一次 pytho?n,可以匹配为python或pythn

  • 匹配前面的字符一次或多次 py+thon,可以匹配为python到pyy…thon
  • 匹配前面的字符零次或多次 py*thon,可以匹配为pthon到pyy…thon

{n} 匹配前面的字符n次 py{2}thon,只能匹配pyython
{n,} 匹配前面的字符最少n次 py{2,}thon,可以匹配pyython到pyy…thon
{n,m} 匹配前面的字符最少n次,最多m次 python{0,2},可以匹配pytho、python、pythonn三种情况

字符类
正则表达式查找数字和字母是简单的事,因为有元字符,但是如果没有预定义元字符的字符合集(比如元音字母),那该怎么办呢?

也简单,在方括号里列出他们,[aeiou]就是匹配元音字母,[0-9]代表的含义就和\d完全一致,代表一个数字,[a-z0-9A-Z_]等同于\w(不考虑汉字),如果想匹配任意一个汉字,可以使用[\u4e00-\u9fa5],匹配多个汉字,只需在前面的基础上加个+即[\u4e00-\u9fa5]+

排除字符
匹配不符合指定字符集合的字符串,^放在方括号表示排除的意思

举例

表示匹配一个不是字母的字符

选择字符
如果我们想要它匹配的结果是多种,就需要使用选择字符(|)该字符是或的意思

举例

身份证的长度为15位或18位,其中15位全为数字,18位分为全为数字和前17位为数字最后一位可能是数字或字符X,那么匹配的表达式可写为:

转义字符
转义字符的作用就是将特殊字符(如“.”“?”“\”)变为普通的字符,例如匹配QQ邮箱:

1\d{4,10}@qq.com$

括号在正则表达式也算是元字符

()

作用一:改变限定符的作用范围

作用二:分组,也就是子表达式(.[0,9]{1,4}){4},就是对其进行重复操作

【文末领取全套Python学习资源】

python使用正则表达式

匹配字符串
match()
从字符串的开始处进行匹配,如果起始位置匹配成功,则返回Match对象,否则返回None。语法格式如下:

re.match(pattern,string,[flags])
pattern:表示模式字符串,由要匹配的正则表达式转换而来

string:表示要匹配的字符串

flags:表示标志位,用于控制匹配方式,如是否区分字母大小写

常用标志

标志 说明
A或ASCII 对\w,\b,\d,\s,只进行ASCII匹配
I或IGNORECASE 不区分字母大小写
M或MULTILINE 将^和$用于包括整个字符串的开始和结尾的每一行
S或DOTALL 使用“.”字符匹配所有字符,包括换行符
X或VERBOSE 忽略模式字符串中未转义的空格和注释
举例

匹配字符串是否以“mr_”开头,不区分字母大小写

代码

import re
pattern='mr_\w+'
string='MR_SHOP mr_shop'
match=re.match(pattern,string,re.I)
print(match)
print('匹配值的起始位置:',match.start())
print('匹配值的结束位置:',match.end())
print('匹配位置的元组:',match.span())
print('要匹配的字符串:',match.string)
print('匹配数据:',match.group())
string='名称 MR_SHOP mr_shop'
match=re.match(pattern,string,re.I)
print(match)

执行结果

image.png

search()
在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回Match(),否则返回None,语法格式如下:

re.search(patter,string,[flags])
pattern:表示模式字符串,由要匹配的正则表达式转换而来

string:表示要匹配的字符串

flags:表示标志位,用于控制匹配方式,如是否区分字母大小写

举例

搜索第一个以“mr_”开头的字符串,不区分字母大小写

代码

import re
pattern='mr_\w+'
string='MR_SHOP mr_shop'
search=re.search(pattern,string,re.I)
print(search)
string='名称 MR_SHOP mr_shop'
search=re.search(pattern,string,re.I)
print(search)

执行结果

image.png

findall()
在整个字符串中搜索 所有符合正则表达式的字符串,并以列表的形式返回,如果匹配成功,则返回包含匹配结构的列表,否则返回空列表,语法格式如下:

re.findall(pattern,string,[flags])
pattern:表示模式字符串,由要匹配的正则表达式转换而来

string:表示要匹配的字符串

flags:表示标志位,用于控制匹配方式,如是否区分字母大小写

举例

搜索以“mr_”开头的字符串

代码

import re
pattern='mr_\w+'
string='MR_SHOP mr_shop'
findall=re.findall(pattern,string,re.I)
print(findall)
string='名称 MR_SHOP mr_shop'
findall=re.findall(pattern,string)
print(findall)

执行结果

image.png

sub()
实现字符串替换,语法格式如下:

re.sub(patter,repl,string,count,flags)
pattern:表示模式字符串,由要匹配的正则表达式转换而来

repl:表示替换的字符串

string:表示要被查找替换的原始字符串

count:可选参数,表示模式匹配后替换的最大次数,默认值为0

flags:表示标志位,用于控制匹配方式,如是否区分字母大小写

举例

隐藏快递里的手机号码

代码

import re
pattern='1[34578]\d{5}'
string='快递号:7-1563 联系电话:18888358853'
result=re.sub(pattern,'1XXXXXX',string)
print(result)

执行结果
image.png

替换敏感字符

代码

import re
pattern='淘宝'
string='我在淘宝买东西'
result=re.sub(pattern,'某宝',string)
print(result)

执行结果
image.png

split()
根据正则表达式分割字符串,并以列表的形式返回,语法格式如下:

re.split(pattern,string,[maxsplit],[flags])
pattern:表示模式字符串,由要匹配的正则表达式转换而来

string:表示要匹配的字符串

maxsplit:可选参数,表示最大的拆分次数

flags:表示标志位,用于控制匹配方式,如是否区分字母大小写

举例

对给定的url地址中提取请求地址和各个参数

代码

import re
pattern='[?|&]'
url='http://www.baidu.com/login?username="zhangsan"&pwd="password"'
result=re.split(pattern,url)
print(result)

执行结果
image.png

如果大家对Python感兴趣,那么这套python学习资料一定对你有用

对于0基础小白入门:

这如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等习教程。带你从零基础系统性的学好Python!

在这里插入图片描述
我已经上传至CSDN官方,如果需要可以扫描下方二维码都可以免费获取【保证100%免费】

零基础Python学习资源介绍

  1. Python所有方向的学习路线图,清楚各个方向要学什么东西

  2. 600多节Python课程视频,涵盖必备基础、爬虫和数据分析

  3. 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论

  4. 爬虫与反爬虫攻防教程包,含15个大型网站迫解

  5. 超300本Python电子好书,从入门到高阶应有尽有

  6. 华为出品独家Python漫画教程,手机也能学习

  7. 历年互联网企业Python面试真题,复习时非常方便

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉100道Python练习题👈

检查学习结果。
在这里插入图片描述

👉面试刷题👈

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

最新全套【Python入门到进阶资料 & 实战源码 &安装工具】(安全链接,放心点击)

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。


  1. 1-9 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值