码迷,mamicode.com
首页 > 编程语言 > 详细

正则表达式 (python 2)

时间:2018-03-04 10:37:58      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:对象   正则   test   否则   模块   sre   判断   不用   body   

Python提供re模块,包含所有正则表达式的功能。由于Python的字符串本身也用\转义,所以要特别注意:

s = ‘ABC\\-001‘ # Python的字符串
# 对应的正则表达式字符串变成:
# ‘ABC\-001‘

建议使用Python的r前缀,就不用考虑转义的问题了:

s = r‘ABC\-001‘ # Python的字符串
# 对应的正则表达式字符串不变:
# ‘ABC\-001‘

 


如何判断正则表达式是否匹配:

>>> import re
>>> re.match(r‘^\d{3}\-\d{3,8}$‘, ‘010-12345‘)
<_sre.SRE_Match object; span=(0, 9), match=‘010-12345‘>
>>> re.match(r‘^\d{3}\-\d{3,8}$‘, ‘010 12345‘)
>>>
match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None。


常见的判断方法:

test = ‘用户输入的字符串‘
if re.match(r‘正则表达式‘, test):
print(‘ok‘)
else:
print(‘failed‘)


正则表达式还有提取子串的功能。用()表示的就是要提取的分组(Group)

^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码

>>> m = re.match(r‘^(\d{3})-(\d{3,8})$‘, ‘010-12345‘)
>>> m
<_sre.SRE_Match object; span=(0, 9), match=‘010-12345‘>
>>> m.group(0)
‘010-12345‘
>>> m.group(1)
‘010‘
>>> m.group(2)
‘12345‘


group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串

 


>>> t = ‘19:05:30‘
>>> m = re.match(r‘^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$‘, t)
>>> m.groups()
(‘19‘, ‘05‘, ‘30‘)

这个正则表达式可以直接识别合法的时间

正则表达式 (python 2)

标签:对象   正则   test   否则   模块   sre   判断   不用   body   

原文地址:https://www.cnblogs.com/wander-clouds/p/8482044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!