2021-08-20Python基础之正则

1、正则基础

  1. 导入模块 import re
  2. 使用match方法进行匹配
    1. re.match 能过匹配出以xxx开头的字符串,如果起始位置没有匹配成功,返回None,匹配成功返回的是一个对象
    2. res=re,match(正则表达式,要匹配的字符串)
  3. group方法
    1. 若match匹配成功,可以使用group方法来提取数据 res.group()
  4. 匹配单个首字符
    1. . 匹配任意一个字符(除 \n)
    2. 匹配 [ ]中列出的字符
    3. \d 匹配数字0-9
    4. \D 匹配非数字
    5. \s 匹配空白即空格和 tab键
    6. \S 匹配非空白
    7. \w 匹配单词字符 即 a-z、 A-Z、0-9、汉字
    8. \W 匹配非单词字符
  5. 匹配多个字符(搭配单字符匹配使用):
    1. *匹配前一个字符出现0次或无限次,即可有可无
    2. (+) 匹配前一个字符出现1次或者无限次,即至少一次
    3. ?匹配前一个字符出现1次或0次,即 要么1次要么0次
    4. {m}匹配前一个字符出现m次
    5. {m,n}匹配前一个字符出现从m到n次
  6. 匹配开头和结尾
    1. ^匹配字符串开头,表示对什么取反(只有在[ ] 中才不匹配显示取反)
    2. $ 匹配字符串结尾
  7. 匹配分组
    1. | 匹配左右任意一个表达式
    2. (ab)将括号中的字符作为一个分组
    3. \num 引用分组num匹配到字符串
    4. (?P)分组起别名
    5. (?P=name)引用分组别名为name分组匹配到的字符串
    6. group(1) 可用分组取匹配到的字符串中的字符
  8. 高级用法
    1. search() 会扫描整个字符串并返回第一个成功的匹配。match() 从第一个匹配
    2. findall() 会以列表的形式返回匹配到的字符串
    3. sub() 将匹配的数据进行替换
    4. split() 根据匹配进行切割字符串,并返回一个结果
  9. 贪婪与非贪婪
    1. 贪婪:在满足匹配时,匹配尽可能多的字符,默认采用贪婪模式
    2. 非贪婪:在满足匹配时,匹配尽可能少的字符,使用? 来表示非贪婪匹配
  10. 原生字符串
    1. 在python中字符串前加 r 表示原生字符串
import re
#match
res=re.match('精','精忠报国')# 精
#匹配单个字符 . [] \d \D \s \S \w \W
res=re.match('..','精忠报国')# 精忠
res=re.match('[精忠]','精忠报国')# 精 从头开始匹配 匹配不上报错
res=re.match('\d','12344sdf')# 1
res=re.match('\D','精123忠报国')# 精
res=re.match('\s',' ')#
res=re.match('\S','精忠报国')# 精
res=re.match('\w*','精忠报国234yydS dfg')# 精忠报国234yydS
res=re.match('\W*','#忠¥报!国')# #
print(res.group())
#多字符匹配 * + ? {m} {m,n}
import re
res=re.match('.*','精忠报国yyds')# #精忠报国yyds
res=re.match('精忠+','精忠报国有精忠神')# 精忠
res=re.match('精?','sdfs')#
res=re.match('精忠报国{1,2}','精忠报国精忠报国')# 精忠报国
print(res.group())
import re
res=re.match('^yy','yydes')# yy
res=re.match('.{2}de$','yyde')# yyde {}中的字符位数加上末尾匹配字符等于被匹配字符串 否则报错
res=re.match('[ayd]*','dyds')# dyd
res=re.match('\s|.*','yyds1 df')# yyds1 df #匹配左右任意一个表达式,从左到右 两个都不满足则报错
res=re.match('\w*(qq|163|df).com','23425qq.com')# 23425qq.com
res=re.match('<\w*>\w*</\w*>','<html>python</html>')# <html>python</html>
res=re.match('<(\w*)>\w*</\\1>','<html>python</html>')# <html>python</html> \num
res=re.match(r'<(?P<p>\w*)>\w*</(?P=p)>','<html>python</html>')# <html>python</html> (?P<name>)
print(res.group())
#高级用法
import re
# res=re.search('忠','精忠报国')#从头开始查找
# print(res.group())# 忠
res=re.findall('yyd','精yy忠报国yyds')# ['yyd']
res=re.sub('yy','jj','yyds')# jjds
res=re.split(',','yyds,精忠报国,yyg')#['yyds', '精忠报国', 'yyg']
res=re.findall('y','ydydyd')# ['y', 'y', 'y']
res=re.findall('y*?','ydydyd')# ['', 'y', '', '', 'y', '', '', 'y', '', ''] findall() 匹配不成功会返回空值
res=re.match('yd*?','yddd')# y
print(res.group())

2.正则表达式的概念

正则表达式就是记录文本规则的代码

3.正则表达式的特点

  1. 正则表达式语法可读性很差
  2. 正则表达式通用性很强,能够适用于很多编程语言



  • 文明其精神,野蛮其体魄
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值