正则表达式的介绍与的应用(python)

简介

正则表达式是一套用于做字符串的检索的引擎

  1. 正则表达式起源于Unix
  2. 正则表达式是一种小型的,高度专业化的编程语言,内嵌在Python的re模块
  3. 运行原理:正则表达式会被编译成一系列的字节码,然后由用C编写的匹配引擎执行
  4. 正则表达式语言相对小型和受限,不是所有的字符串都能用正则表达式

元字符串

  1. []
    a. 通常用来指定一个字符集合,必须给一个范围
    b. 配合^表示取反,[]内的字符全部都不取
    c. []内的元字符串,不发生作用,只视为普通字符串
  2. ^
    a. 匹配行首
    b. 取反
  3. $
    用于匹配行尾
  4. \
    a. 配合不同的字符产生特殊含义
    \w 匹配任何字母数字字符: [0-9a-zA-Z]
    \W 同上取反
    \d 匹配任何十进制数
    \D 同上取反
    \s 匹配任何空白字符 : \t \n \f
    \S 同上取反
    b. 用于转义
  5. {n}
    重复n次—指定重复次数
    所有的辅助型元字符串,只修饰前面的元字符串
  6. *
    重复:0~多次
  7. +
    重复: 1~多次
  8. ?
    a. 重复: 0~1次
    b. 非贪婪模式:尽可能少的匹配
    默认重复都是贪婪模式:能匹配多少全都要
  9. {m,n}
    重复: m~n次
  10. .
    匹配除了换行符以外的所有的字符
  11. ()
    分组,只显示括号内的内容,括号外的元字符也执行了
  12. |

应用

正则表达式的执行:
1. 直接解释执行
2. 先编译,后解释—效率高

re模块下提供了编译相关方法
compile()—函数,返回一个编译之后的正则对象

通过函数创建一个对象---工厂模式
目的:提高匹配时的执行效率
import re
rule='abc'
re_compile=re.compile(rule) # 创建正则对象---工厂模式
print(re_compile.findall(s))

正则对象的属性和方法re模块

  1. findall()
    找到正则匹配的所的字符串,并打包成列表返回
  2. match()
    匹配行首
    如果匹配到对应的字符串,则返回一个Match对象
    如果没有匹配到对应的字符串,则返回一个None值
    match方法和Match对象无关
  3. search()
    搜索字符串,找到正则对象匹配的对应的下标(位置)
  4. finditer()
    将匹配到的所有字符串,打包成迭代器返回
    每个元素均为Match对象
  5. sub(正则,替换的字符串,目标字符串)
    替换字符串
  6. subn()
    替换字符串并返回替换的次数
  7. split()
    分割字符串
import re
# 匹配出1-99之间的数字
ret = re.findall("[1-9]?[1-9]", "7777733")
ret1 = re.match("[1-9]?[1-9]", "7777733")
ret2 = re.search("[1-9]?[1-9]", "7777733")
ret3 = re.finditer("[1-9]?[1-9]", "7777733")
ret4 = re.sub("[1-9]?[1-9]", '77', "7777733",)
ret5 = re.subn("[1-9]?[1-9]", '77', "7777733")
print(ret)
print(ret1)
print(ret2)
print(ret3)
print(ret4)
print(ret5)
['77', '77', '73', '3'] 
<re.Match object; span=(0, 2), match='77'>    
<re.Match object; span=(0, 2), match='77'> 
<callable_iterator object   at 0x000002607054E898> 
77777777 
('77777777', 4)

Match对象的属性和方法

  1. group()
    返回被RE匹配的字符串
  2. start()
    返回匹配到的字符串的开始下标
  3. end()
    返回匹配到的字符串的结束下标
  4. span()
    返回匹配到的字符串的开始下标和结束下标,打包成元组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值