18 练习题:正则表达式

# 1、匹配整数或者小数(包括正数和负数)
^-?\d*0?(\.\d*[1-9])?$


# 2、匹配年月日日期 格式2018-12-6
(20|19)\d{2}-(0[1-9]|1[0-2])-([0-2][0-9]|3[0-1])


# 3、匹配qq号
[1-9]\d{8}\d{0,2}


# 4、11位的电话号码
1[3-9]\d{9}


# 5、长度为8-10位的用户密码 : 包含数字字母下划线
\w{8,11}


# 6、匹配验证码:4位数字字母组成的
[0-9a-zA-Z]{4}


# 7、匹配邮箱地址
[\w-.]+@([-.\da-zA-Z]+)?[\da-zA-Z-]\.[a-zA-Z\d]{2,6}


# 8、从类似
# <a>wahaha</a>
# <b>banana</b>
# <h1>qqxing</h1>
# 这样的字符串中,
# 1)匹配出wahaha,banana,qqxing内容。
# 2)匹配出a,b,h1这样的内容
import re
ret = re.findall(r'<(\w+)>(.+?)</(\1)>', '<a>wahaha</a>')
print(ret)



# 9、1-2*((60-30+(-40/5)(9-25/3+7/399/42998+10568/14))-(-4*3)/(16-3*2))
# 1)从上面算式中匹配出最内层小括号以及小括号内的表达式
import re
ret = re.findall('\([^()]+\)', '1-2*((60-30+(-40/5)(9-25/3+7/399/42998+10568/14))-(-4*3)/(16-3*2))')
print(ret)  # ['(-40/5)', '(9-25/3+7/399/42998+10568/14)', '(-4*3)', '(16-3*2)']



# 10、从类似9-25/3+7/399/42998+10568/14的表达式中匹配出从左到右第一个乘法或除法
import re
ret = re.findall('\d+[/*]\d+', '9-25/3+7/399/42998+10568/14')
print(ret[0])  # 25/3


posted @ 2020-07-16 23:10  Raigor  阅读(163)  评论(0编辑  收藏  举报