匹配开头结尾
字符 | 功能 |
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
示例1:$
需求:匹配163.com的邮箱地址
for
email
in
email_list:
ret = re.match(
"[\w]{4,20}@163
\.com$
"
, email)
\.代表只是一个点
$代表以xxx结尾的字符串
if
ret:
print(
"%s ---是符合规定的邮件地址”
% email)
else
:
print(
"%s ---不符合要求"
% email)
运行结果:
xiaoWang@163.com ---是符合规定的邮件地址
xiaoWang@163.comheihei ---不符合要求 # 如果没有$,这个字符串会匹配出来
[email protected] ---不符合要求
匹配分组
字符 | 功能 |
| | 匹配左右任意一个表达式 |
(ab) | 将括号中字符作为一个分组 |
\num | 引用分组num匹配到的字符串 |
(?P<name>) | 分组起别名 |
(?P=name) | 引用别名为name分组匹配到的字符串 |
示例1:|
需求:匹配出0-100之间的数字
#coding=utf-8
import
re
ret = re.match(
"[1-9]?\d"
,
"8”
) #
?匹配前面的字符出现1次或者0次 类似78也可以匹配
print(ret.group())
# 8
# 可能匹配不成功时?
ret = re.match(
"[1-9]?\d$"
,
"08"
)
if
ret:
print(ret.group())
else
:
print(
"不在0-100之间”
) #不在0-100之间
# 添加|
ret = re.match(
"[1-9]?\d$|100"
,
"78"
)
print(ret.group())
# 78
ret = re.match(
"[1-9]?\d$|100"
,
"100"
)
print(ret.group())
# 100
示例2:( )
需求:匹配出163、126、qq邮箱
#coding=utf-8
import
re
ret = re.match(
"\w{4,20}@163\.com"
,
"
[email protected]
”
) , 类似还有
"te[email protected]” 、"[email protected]"也可以匹配
if
ret:
print(ret.group())
else
:
print(
"不是163、126、qq邮箱"
)
# 不是163、126、qq邮箱
不是以4、7结尾的手机号码(11位)
import
re
tels = [
"13100001234"
,
"18912344321"
,
"10086"
,
"18800007777"
]
for
tel
in
tels:
ret = re.match(
"1
\d{9}
[0-3,5-6,8-9]
"
, tel)
if
ret:
print(ret.group())
else
:
print(
"%s 不是想要的手机号"
% tel)
提取区号和电话号码
>>>
ret = re.match(
"([^-]*)-(\d+)"
,
"010-12345678"
)
>>>
ret.group()
'010-12345678'
>>>
ret.group(
1
)
'010'
>>>
ret.group(
2
)
'12345678'
^在[ ]里面代表非的含义 [^-]* 代表前所有字符0个或者多个,非-的字符串。
[^abc] 代表非a、且非b 、且非c的字符