正则表达式 贪婪匹配

一:绝对导入与相对导入

1.在程序中涉及多个文件之间导入模块的情况 一律按照执行文件所在的路径为准
绝对导入:
image
始终按照执行文件所在的路径sys.path查找模块
2.相对导入
句点符(.)  
表示当前文件路径      
..表示上一层文件路径
image
3.能够打破始终以执行文件为准的规则 只考虑两个文件之间的位置
相对导入只能用在模块文件中 不能用在执行文件中使用

二:软件开发目录规范

目录规范并无固定的要求 只要符合清晰可读即可

bin文件夹
	存放一系列启动文件(当启动文件很少或者只有一个的时候也可以直接写在外面)
		start.py 

conf文件夹
	存放一系列配置文件 (不经常改动 )
		settings.py(配置文件一般情况下该文件内的变量名都是大写)
lib文件夹
	存放公共的功能(把一些常用的很多人都要用的,写成函数,共大家调用)
	(项目很多都需要使用)
		common.py
	
db文件夹
	存放数据相关文件(存取数据相关的)
		userinfo.txt
log文件夹
	存放日志记录文件(记录每个人操作了什么 记录用户程序都干了什么)
		log.txt
core文件夹
	存放项目核心代码文件(项目有什么功能基本在这个文件夹)(如果核心代码很多可以在分文件夹)
	src.py
readme文件
	存放说明相关信息(类似于说明书 广告 章程)
	

requirements.txt
	存放项目所需的第三方模块及版本号()

三:命令行 以防万一

import sys
import os
           在将文件夹添加到主文件夹    上一层   文件
base_dir = os.path.dirname(os.path.dirname(__file__))   将当前文件添加当上一个文件
sys.path.append(base_dir)   将主文件添加到系统 cmd可以运行
print(base_dir)  主文件路径


* 作用防止不在pycharm运行 在系统运行时使用

from core import src

 启动脚本最好加上
if __name__ == '__main__':
    src.get_start()

image

四:正则表达式

正则表达式是一门独立的语言 跟其他编程语言没有关系!!!
如果想在python代码中使用正则 需要借助于内置模块re

什么是正则表达式?
	利用一些特殊符号的组合去字符串中筛选出符合条件的数据
    
    
    
必须是11位
必须是纯数字
必须符合手机号的排布 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('不是合法的手机号')

五:字符组

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

特殊符号默认也只能单个单个字符匹配

.        匹配除换行符以外的任意字符
\d       匹配数字
^		匹配字符串的开始
$		匹配字符串的结尾
"""^与$组合使用可以精准限制要查找的数据"""
a|b      匹配字符a或字符b
()       匹配括号内的表达式也表示一个组(不会影响正则表达式的匹配单纯的分组而已)
[...]    匹配字符组中的字符
[^...]	 匹配除了字符组中字符的所有字符


完全
image

六:量词

1.表达式在没有量词修饰的情况下 都是单个单个匹配
2.量词必须结合(字符串,特殊符号等)一起使用 不能单独出现
3.量词只能影响前面的一个表达式(ab+ 只能影响b)


*		重复零次或更多次   可以重复零到多次
+		重复一次或更多次   可以重复一到多次
?		重复零次或一次     可以重复零到一次
{n}		重复n次      a{9}    a只能是9次
{n,}	重复n次或更多次
{n,m}	重复n到m次
正则表达式中的量词默认都是 贪婪匹配

七:贪婪匹配

带匹配的字符串
<script>123</script>
正则表达式
<.*>   默认贪婪匹配 尽可能多的匹配
将贪婪变为非贪婪 只需要在量词的后面加问好即可
<.*?>   非贪婪匹配 尽可能少的匹 结束条件又左右两边决定

image

posted @ 2021-11-24 20:17  AlexEvans  阅读(704)  评论(0编辑  收藏  举报