1、匹配整数或者小数(包括正数和负数)
-?\d+(\.\d+)?
2、匹配年月日日期 格式2018-12-6
[1-9]\d{0,3}-([1][0-2]|[0]?[1-9])-([12][0-9]|3[01]|0?[0-9])
测试用:
2018-12-16 2018-1-2 2018-2-30 2018-3-32 2018-0-1 2018-0-0 2018-10-10
2018-0-1 2018-10-10 2018-3-1 2018-13-24 2018-12-31 2013
3、匹配qq号
qq号分为5-12位的.
[1-9]\d{4,11}
4、11位的电话号码
首位为1,第二位为3-9,其余位为0-9
1[3-9]\d{9}
5、长度为8-10位的用户密码 : 包含数字字母下划线
\w{8,10}
6、匹配验证码:4位数字字母组成的
[\da-zA-Z]{4}
7、匹配邮箱地址
邮箱规则:
@之前必须有内容,且只能是字母(大小写) 数字 下划线(_) 减号(-) 点(.)
@和最后一个点(.)之间必须有内容且只能是字母(大小写) 数字 点(.)减号(-),且两个点不能挨着
最后一个点之后必须有内容,且只能为字母(大小写) 数字且长度为大于等于2个字节
[\da-zA-Z][\w\-.]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9\-]+)*\.[A-Za-z0-9]{2,6}
8、从类似
<a>wahaha</a>
<b>banana</b>
<h1>qqxing</h1>
这样的字符串中,
1)匹配出wahaha,banana,qqxing内容。
\w{6}
>\w+<
2)匹配出a,b,h1这样的内容
<[^/]*>
9、1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))
1)从上面算式中匹配出最内层小括号以及小括号内的表达式
[(][^(]+[)]
10、从类似9-2*5/3+7/3*99/4*2998+10*568/14的表达式中匹配出从左到右乘法或除法
(\d+[*/]\d+)
# 正则表达式练习
# 1、匹配一篇英文文章的标题 类似 The Voice Of China
# ([A-Z][a-z ]+)+
# 2、匹配一个网址
# 类似 https://www.baidu.com http://www.cnblogs.com
# ^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+
# 3、匹配年月日日期 类似 2018-12-06 2018/12/06 2018.12.06
# \d{4}(\-|\/|.)\d{1,2}\1\d{1,2}
# \d{4}(?P<sep>\-|\/|.)\d{1,2}(?P=sep)\d{1,2}
# 4、匹配15位或者18位身份证号
# ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$
# ^[1-9]\d{14}(\d{2}[0-9x])?$
♥♥♥♥♥
# 5、从lianjia.html中匹配出标题,户型和面积,结果如下: # [('金台路交通部部委楼南北大三居带客厅 单位自持物业', '3室1厅', '91.22平米'), ('西山枫林 高楼层南向两居 户型方正 采光好', '2室1厅', '94.14平米')] f = open('lianjia.html','r',encoding='utf-8') s = f.read() parttern = '<div class="info clear">.*?<a class="".*?>(?P<title>.*?)</a>.*?<span class="divide">/</span>(?P<house_type>.*?)<span class="divide">/</span>(?P<size>.*?)<span class="divide">/</span>' import re ret = re.findall(parttern,s,re.S) print(ret) f.close()