python 正则表达式基础实战

python正则表达式的过程大致如下图:


首先,通过re.compile()函数,生成pattern对象,该对象可以多次使用。

然后调用pattern对象的match(string)方法,在string中进行匹配,匹配成功后,返回 一个match对象,

通过调用match对象的group()方法,可以查看匹配到的信息。。。。

下面,我们简单示例一下:

>>> p=re.compile(r'imooc')#生成pattern对象,该对象可以多次使用
>>> p
<_sre.SRE_Pattern object at 0x7f121d1a2418>
>>> type(p)
<type '_sre.SRE_Pattern'>
>>> m=p.match('imoocabc')#生成match对象
>>> m
<_sre.SRE_Match object at 0x7f121d194238>
>>> type(m)
<type '_sre.SRE_Match'>
>>> m.group()#匹配到的子串
'imooc'
>>> m.string #被匹配的字符串
'imoocabc'
>>> m.span() #匹配到的子串在原字符串中的索引位置
(0, 5)
>>> m.re #pattern实例
<_sre.SRE_Pattern object at 0x7f121d1a2418>
>>> 

>>> p=re.compile(r'imooc')
>>> m=p.match('IMOOcjfjd')#匹配失败,因为区分大小写
>>> type(m)
<type 'NoneType'>
>>> m.group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> p=re.compile(r'imooc',re.I)#re.I表示忽略(ignore)大小写
>>> p
<_sre.SRE_Pattern object at 0x7f121d1b71f8>
>>> type(p)
<type '_sre.SRE_Pattern'>
>>> m=p.match('imoocjdf')
>>> m.group()
'imooc'
>>> m=p.match('IMOOcjdf')
>>> m.group()
'IMOOc'
>>> 

>>> p=re.compile(r'(imooc)',re.I)#将imooc放到圆括号中
>>> p
<_sre.SRE_Pattern object at 0x7f121f265f48>
>>> m=p.match('iMOOCidf')
>>> m
<_sre.SRE_Match object at 0x7f121d1d9198>
>>> m.group()
'iMOOC'
>>> m.groups()#将imooc放到圆括号中,m.groups()会返回一个元组
('iMOOC',)
>>> 
上面的示例,我们都是先调用re.compile()方法,生成一个pattern对象,然后再调用该pattern对象的match()方法,这两步可以合并为一步,如下:

>>> m=re.match(r'imooc','imoocjdf')#先生成pattern对象,再生成match对象,缺点:生成的pattern对象只使用了一次!
>>> m
<_sre.SRE_Match object at 0x7f121f2c2ac0>
>>> type(m)
<type '_sre.SRE_Match'>
>>> m.group()
'imooc'
上面是正则表达式的简单使用,现在,我们学习正则表达式的基础语法:

【1】匹配单个字符

1》
.:用来匹配任意一个字符(不包含'\n')

>>> m=re.match(r'.','adg')
>>> m.group()
'a'
>>> m=re.match(r'.','123adg')
>>> m.group()
'1'
>>> m=re.match(r'.','@123adg')
>>> m.group()
'@'
>>> m=re.match(r'.','%@123adg')
>>> m.group()
'%'
>>> m=re.match(r'.','\n%@123adg')#  .无法匹配'\n'
>>> m.group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> type(m)
<type 'NoneType'>
>>> m=re.match(r'{.}','{a}\n%@123adg')
>>> m.group()
'{a}'
>>> m=re.match(r'{.}','{8}\n%@123adg')
>>> m.group()
'{8}'
>>> m=re.match(r'{.}','{8ab}\n%@123adg')
>>> m.group()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> type(m)
<type 'NoneType'>
>>> m=re.match(r'{...}','{8ab}\n%@123adg'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值