1、匹配整数或者小数(包括正数和负数)
-?(0|[1-9]\d*)(\.\d+)? -?(0|[1-9]\d*)(\.\d)?
2、匹配年月日日期 格式2018-12-6
【年首位不为0,月、日可以是一位数或两位数】
[1-9]\d{3}-(1[0-2]|0?[1-9])-([12]\d|3[01]|0?[1-9]) ^[1-9]\d{3}-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|30|31)$ [1-9]\d{3}-(1[0-2]|0?[1-9])-(0?[1-9]|[1-2]\d|3[0-1])
3、匹配qq号
[1-9]\d*{4}
4、11位的电话号码
1[3-9]\d{9}
5、长度为8-10位的用户密码 : 包含数字字母下划线
\w{8,10}
6、匹配验证码:4位数字字母组成的
[0-9A-Za-z]{4}
7、【★】匹配邮箱地址
[-\w.]+@([-\da-zA-Z]+[.])+[\da-zA-Z]{2,6}
8、从类似
<a>wahaha</a> <b>banana</b> <h1>qqxing</h1>
这样的字符串中, 1)匹配出wahaha,banana,qqxing内容。
s='''<a>wahaha</a> <b>banana</b> <h1>qqxing</h1>''' import re ret = re.findall('<.*?>(.*?)</.*?>',s) print(ret) 执行结果: ['wahaha', 'banana', 'qqxing']
2)匹配出a,b,h1这样的内容
s='''<a>wahaha</a> <b>banana</b> <h1>qqxing</h1>''' import re ret = re.findall('<.*?>.*?</(.*?)>',s) print(ret) 执行结果: ['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
的表达式中匹配出从左到右第一个乘法或除法
方法一:search s='9-2*5/3+7/3*99/4*2998+10*568/14' import re ret = re.search('\d+?(?:\*|\/)\d+',s) print(ret.group()) 方法二:findall s='9-2*5/3+7/3*99/4*2998+10*568/14' import re ret = re.findall('\d+?(?:\*|\/)\d+',s) print(ret[0]) 执行结果:2*5