正则表达式

正则表达式的概念:

    非常简洁的表达一组字符串的特征

正则表达式的编译

    正则表达式编译之后才能表达一类字符串

正则表达式语法:

正则表达式是由字符和操作符构成

操作符

操作符説明实例
.表示任意单个字符
[]字符集,对单子字符给出取值范围[abc]
[^]非字符集,对单子字符给出排除范围[^abc]
*前一个字符0次或者无限次扩展abc*
+前一个字符1次或者无限次扩展abc+标识:abc,abcc,abccc等
?前一个字符0次或者1次扩展abc? 标识:ab,abc
竖线左右表达式任意一个

re库的match对象
match对象的属性

属性说明
.string待匹配的文本
.re匹配时使用的pattern对象(正则表达式)
.pos正则表达式搜素文本的开始位置
.endps正则表达式搜素文本的结束位置

实验:

>>> import re
>>> match = re.search(r'[1-9]\d{5}', 'BIT 100081')
>>> if match:
    print(match.group(0))
100081
>>> type(match)
<class '_sre.SRE_Match'>

group(0):
    获取匹配的字符串
>>> import re
>>> m = re.search(r'[1-9]\d{5}', 'BIT 100081 TSU100084')
>>> m.string
'BIT 100081 TSU100084'
>>> m.pos
0
>>> m.endpos
20
>>> m.group(0)
'100081'
>>> m.start
<built-in method start of _sre.SRE_Match object at 0x000002156A827578>
>>> m.start()
4
>>> m.end
<built-in method end of _sre.SRE_Match object at 0x000002156A827578>
>>> 
>>> m.end()
10
>>> m.spand()
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    m.spand()
AttributeError: '_sre.SRE_Match' object has no attribute 'spand'
>>> m.span()#二元位置
(4, 10)

正则匹配的贪婪模式
re库默认是贪婪模式,即输出匹配最长的字符串

>>> match = re.search(r'PY.*N','PYANBNCNDN')
>>> match.group(0)
'PYANBNCNDN'

如何匹配最小匹配
>>> a = re.search(r'PY.*?N','PYANBNCNDN')
>>> a.group(0)
'PYAN'

最小匹配操作符

操作符说明
*?前一个字符0次或无限扩展,最小匹配
+?前一个字符1次或无线次扩展,最小匹配
??前一个字符0次或1次扩展,最小匹配
{m,n}?扩展前一个字符m-n次包含n,最小匹配
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值