常用正则表达式:
d 可以匹配一个数字
w 可以匹配一个字母或数字
. 可以匹配任何一个字符
要匹配变长的字符:
* 可以匹配零个或n个字符
+ 可以匹配一个或n个字符
? 可以匹配零个或1个字符
{n} 可以匹配n个字符
{n,m} 可以匹配n至m个字符
要做更精确地匹配,可以用[]
表示范围:
要做更精确地匹配,可以用[]
表示范围,比如:
-
[0-9a-zA-Z\_]
可以匹配一个数字、字母或者下划线; -
[0-9a-zA-Z\_]+
可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100'
,'0_Z'
,'Py3000'
等等; -
[a-zA-Z\_][0-9a-zA-Z\_]*
可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量; -
[a-zA-Z\_][0-9a-zA-Z\_]{0, 19}
更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。
A|B
可以匹配A或B,所以(P|p)ython
可以匹配'Python'
或者'python'
。
^
表示行的开头,^d
表示必须以数字开头。
$
表示行的结束,d$
表示必须以数字结束。
练习题:
#! /usr/bin/env python3
# -*- coding:gbk -*-
import re
email1= 'bsdfrgdfg2223434..___es@microsoft.com'
email2='someone@gmail.com'
emailrex = re.compile(r'[a-zA-Z0-9.\_]+@[a-zA-Z0-9.\_]+.com$')
if re.match(emailrex,email1):
print('ok')
else:
print('erros')