软件开发目录规范以及正则表达式
软件目录开发规范
目录规范并无固定的要求,只要符合清晰可读即可
1、bin文件夹
存放一系列启动文件(当启动文件很少或者只要一个的时候也可以直接写在外面)
start.py
2、conf文件夹
存放一系列配置文件
settings.py(一般情况下该文件内的变量名都是大写的)
3、lib文件夹
存放公共的功能
common.py
4、db文件夹
存放数据相关的文件
userinfo.txt
5、log文件夹
存放日志记录文件
log.txt
6、core文件夹(名字没有固定)
存放项目核心代码文件
src.py
7、readme文件
存放说明相关信息(类似于说明书)
8、requirements.txt
存放项目所需的第三方模块及版本号
正则表达式
1、正则表达式简介
正则表达式是一门独立的语言,跟其他编程语言都没有关系。如果想要在python代码中使用正则需要借助于内置模块re
利用一些特殊符号的组合去字符串中筛选出符合条件的数据就是正则表达式
正则表达式在线测试工具:http://tool.chinaz.com/regex/
2、初识正则
像平时要判断一个手机号码是否符合规范。
一般python书写:
phone = input('请输入你的手机号>>>:').strip() if len(phone) == 11: if phone.isdigit(): if phone.startswith('15') or phone.startswith('16') or phone.startswith('18') or phone.startswith('19'): print('手机号正确') else: print('格式不对') else: print('手机号必须是纯数字') else: print('必须是11位')
如果使用正则表达式则为
import re phone_number = input('please input your phone number : ') if re.match('^(13|14|15|18)[0-9]{9}$',phone_number): print('是合法的手机号码') else: print('不是合法的手机号码')
3、正则表达式之字符串
正则表达式 | 待匹配字符 | 匹配结果 | 说明 |
[0123456789] | 8 | True |
在一个字符组里枚举合法的所有字符,字符组里的任意一个字符 和"待匹配字符"相同都视为可以匹配 |
[0123456789] | a | False | 由于字符组中没有"a"字符,所以不能匹配 |
[0-9] | 7 | True | 也可以用-表示范围,[0-9]就和[0123456789]是一个意思 |
[a-z] | s | True | 同样的如果要匹配所有的小写字母,直接用[a-z]就可以表示 |
[A-Z] | B | True | [A-Z]就表示所有的大写字母 |
[0-9a-fA-F] | e | True | 可以匹配数字,大小写形式的a~f,用来验证十六进制字符 |
4、正则表达式之特殊符号
5、正则表达式之量词
贪婪匹配与非贪婪匹配
1、贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下采用贪婪匹配
2、几个常用的非贪婪匹配Pattern
*? 重复任意次,但尽可能少重复
+?重复一次或者更多次,但尽可能少重复
?? 重复零次或者一次,但尽可能少重复
{n, m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
3、.*?的用法
. 是任意字符
* 是取零到无限长度
? 是非贪婪模式
合在一起就是取尽量少的任意字符,一般不会这么单独写;大多用在.*?x 表示取前面任意长度的字符,直到一个x出现
取消转义
在原生的正则表达式中取消转移推荐使用 \ (每个 \ 只能取消一个字符的转义)
在python中取消转义推荐使用 r (也可以使用\)