Python中常用的正则表达式

python 中通过正则表达式对字符串进行匹配的时候,需要用到re模块

import re

  • 标准写法:r要写,代表对整个字符串进行转义
  • re.功能(r”正则表达式”,”需要匹配的字符串”或字符串的引用,标志位(可以不写))
  • re.功能(pattern, string, flags) # flags代表标志位,用于控制pattern是否区分大小写,多行匹配等。
r 表示对正则表达式进行转义(避免正则表达式中\使用时混淆)
^ 仅匹配整个字符串开头
$ 仅匹配整个字符串末尾
\b 匹配一个单词结束边界,例如”er\b”匹配”never”中的er
\B 匹配非单词结束边界,例如”er\B”匹配”verb”中的er
[^X]	匹配非X,^相当于取反,正则默认贪婪,非贪婪加?

匹配分组:

|	匹配左右任意一个表达式
(ab)	将括号内的ab作为一个整体
\num	引用第num个分组
(?P<name>)	分组起名
(?p=name)	引用别名name的分组

通配符

.	除”\n”,任意一个字符
[]	中括号内任意一个字符
\d	数字
\D	非数字
\s	空白字符,包括空格,Tab键
\S	非空白字符
\w	字母、数字、_
\W	非字母、数字、_

匹配前一个字符多少次:

*	匹配>=0次
+	匹配>=1次
?	匹配0或1次
{m}	匹配m次
{m,n}	匹配m到n次

标志位:

re.I	使匹配对大小写不敏感
re.S	使.可以匹配\n
re.M 多行匹配,影响^和$
多个标志位可以写re.S|re.I

RegexObjdct实例的方法和属性

group()  返回匹配的字符串
start()  返回匹配开始的下标
end() 返回匹配结束的下标
span() 返回一个元祖,是匹配(开始,结束)的下标

1 match 完全匹配

默认从字符串开头开始匹配
re.match(r”正则表达式”, “字符串”)  # 如果匹配成功,返回的是一个对象;匹配不成功,返回None
re.match(r”正则表达式”, “字符串”).group()  # 调用group()方法,返回匹配到的内容

2 search 搜索第一个

对整个字符串进行匹配,找到第一个匹配到的内容,将这部分作为对象返回
re.search(r”正则表达式”, “字符串”)  # 返回一个对象
re.search(r”正则表达式”, “字符串”).group()  # 调用group()方法,返回匹配到的内容
re.search(r”正则表达式”, “字符串”).start()  # 返回匹配到内容的起始位置下标

3 findall 查找所有

对整个字符串进行匹配,找到所有匹配到的内容,将这些内容以列表方式返回
re.findall(r”正则表达式”, “字符串”)  # 返回一个列表

4 sub 替换

对整个字符串进行匹配,找到所有匹配到的内容,将其替换,并返回替换后的字符串
re.sub(r”正则表达式”, “替换内容”, “字符串”,)
替换内容可以是一个函数,函数的返回值即是字符串中要替换的元素;这个函数必须将正则匹配后的对象作为参数传入,
若要在匹配到的内容上进行修改,则需要调用group()方法获取匹配内容,如果直接修改,则不需要。

5 split 切片

对整个字符串进行匹配,找到所有匹配到的内容,在匹配到的内容左右进行切片,返回一个列表。
re.split(r”正则表达式”, “字符串”)  # 返回一个列表

6 compile 封装

将正则表达式进行封装,可以循环使用,减少工作量
option = re.compile(r”正则表达式”)
调用方法:例如:option.match(“字符串”)

In [66]: option = re.compile(r"\d")

In [67]: option.findall("a1b2c3")
Out[67]: ['1', '2', '3']

7 finditer

是findall的惰性版本,返回的不是列表,是一个生成器,按需生成re.MatchObject实例,如果有很多匹配的话,re.finditer函数能节省大量内存。

In [61]: a = "aaa1aa2aa3aa4aa5aa6"

In [62]: b = re.finditer("\d",a)

In [63]: next(b)
Out[63]: <_sre.SRE_Match object; span=(3, 4), match='1'>

In [64]: next(b).group()
Out[64]: '2'
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值