python正则表达式

regular expression

. 表示任意的字符 ,除了换行符号
[] 表示范围
* 表示字符可以出现>=0+ 表示字符可以出现>=1次
? 表示0 或者1 次。
[^] 表示非字符集合
| 表示左右表达式任意一个
{m}表示对前面的一个字符进行扩展m次数,例如 ab{2} 匹配的是abb  
{m,n}表示的是扩展m到n次数
^匹配开头 ,例如^abc 表示abc在开头的部分,与之对应的是$ 
() 分组标记内部只能使用|操作符号 例如(abc|de)表示匹配abc,或者是de 
\d 匹配0-9
\w 相当于[A-Za-z0-9]

实例

py{:3}n 
匹配的是 pn ,pyn,pyyn,pyyyn 
^[A-Za-z]+$ 将会匹配由字母组成的字符串
^-?\d+$  匹配整数形式的字符串

在re库中使用raw string 类型表示正则表达式,表示为 r’text’
(’'不会被解释为转义字符)
re库的功能部分函数
(1) re.search() 返回match对象
(2) re.match() 返回match 对象
(3) re.findall() 以列表类型返回全部的子串
(4) re.split() 按照正则表达式的结果进行分割,返回列表类型
(5)sub()替换,并且返回替换之后的结果

# search 实例
re.search( pattern ,string ,flags=0)
# pattern 是正则表达式表示 ,flags是控制标记,string 是待匹配的string 
import re 
match= re.search(r'^[a-z]+$','html')
# match()实例
re.match(pattern, string ,flags=0)
# 参数同search 
import re 
a=re.match(r'[a-z]+$','34html')
这个例子中a是空的,match 将会从起始位置进行匹配

# split 

a=r'[1-9]\d{2}'
c=re.split(a,'cte123 cdr134')

#sub实例
c=re.sub(r'[1-9]\d{2}',':ok ','hello123  world345')
print(c)

re库中含有等价的方法,将raw string 编译为正则表达式的 对象,再使用这个方法

import re 
p=re.compile(r'[1-9]\d{3}')
# raw string 不是正则表达式
s=p.search('helloworld 1234')
#面向对象的方法

match对象

c=re.search(r'[1-9]\d{2}','hello123')
print(type(c))
# 结果是<class '_sre.SRE_Match'>

c=re.findall(r'[1-9]\d{2}','hello123 world 345')
print(type(c))
# 结果是<class 'list'>

属性方法
(1).group(0)匹配之后的字符串
(2).start ()匹配的字符串开始位置
(3).end()结束位置
(4).string 带匹配的string
(5).re 正则表达式


c=re.search(r'[1-9]\d{2}','hello123 world 345')
print(c.string)
#hello123 world 345
print(c.re)
#re.compile('[1-9]\\d{2}')
print(c)
#<_sre.SRE_Match object; span=(5, 8), match='123'>
print(c.group(0))
# 123 

贪婪匹配

引言:re库默认是贪婪匹配,
实例

p=re.search(r'[1-9]*','23467')
print(p.group(0))
# 23467

p=re.search(r'py.*?c','py2c4c67c')
print(p.group(0))
# py2c
#在表示长度操作符后面加入?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值