python-软件目录规范和正则表达式

1. 软件开发目录规范

demo
├── bin  # 存放一系列启动文件,当启动文件很少或者只有一个时也可以直接放外面
   └── start.py
├── conf  # 存放一系列配置文件
   └── settings.py  # 一般情况下该文件的变量名都大写
├── core  # 存放项目核心代码文件
   └── src.py
├── db  # 存放数据相关文件
   └── userinfo.txt
├── lib  # 存放公共的功能
   └── common.py
├── log  # 存放日志的目录
   └── log.txt
├── readme  # 存放相关信息(使用说明等)
└── requirements.txt  # 存放项目所需的第三方模块及版本号

2. 正则表达式

  • 正则表达式是利用一些特殊符号的组合去字符串中筛选出符合条件的数据

  • 工具 https://tool.chinaz.com/regex

    # 判断输入的数字组合是否是合法的手机号
    """
    1.必须是11位
    2.必须是纯数字
    3.必须符合手机号的排布  15 16 18 19
    """
    # 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('不是合法的手机号码')
    

2.1 字符组

  • 特征是使用中括号括起来的 ,字符串默认只能单个单个字符匹配
字符含义
[123456789]简写[0-9]匹配数字 0-9 之间任何一个数字
[a-z]匹配小写字母 a-z 其中任意一个字母
[A-Z]匹配大写字母 a-z 其中任意一个字母
[a-zA-Z0-9]匹配所有数字、大写字母、小写字母

2.2 特殊符号

  • 特殊符号默认也只能匹配单个字符
字符含义
.匹配除换行符以外的任意字符
\d匹配数字
^匹配字符串的开始
$匹配字符串的结尾
a|b匹配字符 a 或 b
()匹配括号内的表达式也表示一个组
[…]匹配字符组中的字符
[^…]匹配除了字符组中字符的所有字符
  • ^$组合使用可以精准限制要查找的数据

2.3 量词

  • 表达式在没有量词的修饰情况下都是单个匹配
  • 量词必须结合(字符串、特殊符号等)一起使用,不能单独出现
  • 量词只能影响前面的一个表达式(ab+ 只能影响 b)
  • 正则表达式中的量词默认都是‘贪婪匹配’
字符含义
*重复零次或者更多次
+重复一次或者更多次
重复零次或者一次
{n}重复 n 次
{n,}重复 n 次或者更多次
{n,m}重复 n 到 m 次

2.4 贪婪匹配与非贪婪匹配

<script>123</script>

# 默认贪婪匹配,尽可能的多匹配
<.*> 匹配结果是<script>123</script>

# 非贪婪匹配,尽可能的少匹配,结束条件由左右两边决定
<.*?> 匹配结果是<script></script>

取消转义

在原生的正则表达式中取消转义推荐使用\(每个\只能取消一个字符的转义)
在python中取消转义推荐使用r'\n\a\t'(也可以使用\)