正则表达式
-
1.功能:
- 不属于任何一种编程语言,主要用于数据的查找和筛选
-
2.字符组
- 1> [0-9] 匹配0到9之间的任意整数
- 2> [a-z] 匹配a到z之间的任意小写字母
- 3> [A-Z] 匹配A到Z之间的任意大写字母
- 4> [1-9a-zA-Z] 匹配0到9之间的任意整数,a到z之间的任意小写字母,A到Z之间的任意大写字母
-
3.特殊符号
- 注意:特殊符号没有搭配量词的时候,一次只对一个数据值生效
- 1> . 匹配除换行符之外的任意字符
- 2> \w 匹配数字,字母,下划线
- 3> \W 匹配非数字,字母,下划线
- 4> \d 匹配数字
- 5> ^ 匹配字符串开头
- 6> $ 匹配字符串结尾
- 7> | 表示或的关系
- 8> () 给正则表达式分组,不影响正则表达式的匹配
- 9> [ ] 匹配字符组中的字符
- 10> [^] 匹配除字符组以外的所有字符
-
4.量词
- 注意:在正则表达式中所有的量词默认都是贪婪匹配(以最多为原则)
- 注意:量词不能单独使用,必须跟在正则表达式后面,并且只对自己前面的那一个生效
- 1> * 重复0次或多次(默认多次)
- 2> + 重复1次或多次(默认多次)
- 3> ? 重复0次或1次(默认1次)
- 4> {n} 重复n次
- 5> {n,} 重复n次或更多次
- 6> {n, m} 重复n次或m次
-
5.贪婪匹配和非贪婪匹配
-
所有的量词默认都是贪婪匹配,如果在量词后面加上一个?号,那么将变成非贪婪匹配
待匹配的文本:<script>alert(123)</script> 正则表达式:<.*> # 贪婪匹配 上述正则匹配出来的内容是:<script>alert(123)</script> 正则表达式:<.*?> # 非贪婪匹配 上述正则匹配出来的内容是:<script> </script> """ 小技巧:以后我们在使用贪婪匹配或者非贪婪匹配的时候一般都是用.*或者.*? 并且结束的标志有上述符号左右两边添加的表达式决定 """
-
-
6.取消转义
-
正则表达式中取消斜杠与字母的特殊含义 就是在斜杠前面加斜杠
\\n \n \\\\n \\n
-
在python中有更加简便的写法
r'\n' r'\\n'
-
-
7.常见的一些正则表达式的实战
-
补充:正则表达式线上测试网址:http://tool.chinaz.com/regex/
-
""" 编写校验用户手机号的正则 0?(13|14|15|17|18|19)[0-9]{9} 编写校验用户身份证的正则 \d{17}[\d|x]|\d{15} 编写校验用户邮箱的正则 \w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14} 编写校验用户qq号的正则 [1-9]([0-9]{5,11}) """
-
作业核心代码
import os
import json
from lib import common
from interface import user
from conf import settings
from db import db_hander
# 1注册
def register():
print('注册'.center(50, '*'))
while True:
username = input('username:').strip()
password = input('password:').strip()
confirm_password = input('password').strip()
# 验证两次密码是否输入一致
if password == confirm_password:
file_path = os.path.join(settings.BASE_DIR, 'db', f'{
username}.json')
if os.path.exists(file_path):
print(f'用户名{
username}已存在')
continue
user.register(username, password)
print(f'用户{
username}注册成功')
return
user_auth = {
'username': '',
}
# 2登录
def login():
print('登录'.center(50, '*'))
while True:
username = input('username').strip()
user_path = os.path.join(settings.BASE_DIR, 'db', '%s.json' % username)
if os.path.exists(user_path):
user_dic = user.get_user_interface(username