day27

1.内容回顾

re模块
   findall  找到所有符合规则的项,并返回列表
   search   找到第一个符合规则的项,并返回一个对象
   match    从头开始 找到第一个符合规则的项,并返回一个对象
   finditer 找到所有符合规则的项,并返回一个迭代器
   compile  预编译一个正则规则,节省多次使用同一个正则的编译时间
   sub      替换 默认替换所有,可以使用替换深度参数
   subn     替换 返回元组
   split    根据正则规则切割,返回列表,默认不保留切掉的内容

分组
   分组命名
      (?P<组名>正则)
   引用分组
      (?P=组命)
   findall和分组
       优先显示分组中的内容
      (?:)取消这个分组的优先
   split和分组
       split会保留正则中分组内匹配到的内容
   search和分组
       search取分组中的内容
           通过索引取 obj.group(1)
           通过组名取 obj.group('组名')

r'元字符 量词 惰性符号'

补充
[] [^]   带有特殊意义的元字符到字符组内大部分都会取消它的特殊意义
   会取消
      [()+*.]
       - [(\-)]  -的位置决定了它的意义,写在字符组的第一个位置/最后一个位置就表示一个普通的横杠
                   写在字符组的其他任何位置都表示一个范围
正则指引

找出<h1>123fh</h1><h2>hado</h2>中所有标签内的字符串   爬虫
import re
ret = re.findall('<.*?>(.*?)<.*?>','<h1>123fh</h1><h2>hado</h2>')
print(ret)

找出四则运算表达式中的第一个乘除法
\d*\d|\d/\d
\d+(\.\d+)?[*/]\d(\.\d+)?
\d+(\.\d+)?[*/]-?\d(\.\d+)?   # 建议不要把等式前面得-号匹配出来,免得不知道是减号还是负号容易出错
import re
ret = re.search('\d+(\.\d+)?[*/]-?\d(\.\d+)?','2-3*-5/6')
print(ret.group())

检测用户输入的内容是否是一个合法的身份证号     网页的合法输入(手机号码 qq号码 银行卡号 邮箱地址)
'^[1-9]\d{14}(\d{2}[\dx])?$'
import re
inp = input('>>>').strip()
re.match('[1-9]\d{14}(\d{2}[\dx])?$',inp)   # 首选
re.search('^[1-9]\d{14}(\d{2}[\dx])?$',inp)
re.findall('^[1-9]\d{14}(\d{2}[\dx])?$',inp)

2.关于作业 计算器

'1*( 2 -  3 /4)' 去空格

'5+(6-1*(2-3/4))+(5-6/3)'
\([^()]+\)得到的结果就是最内层括号内的元素
search

乘法或者除法
1-2*3/4+3*5
\d(\.\d+)?[*/]-?\d+(\.\d+)?
search

加减法

def mul_div(exp):
   # '1*2' '1/2' '1.2*2.4' '5.6*7.8888'
   pass
   return res

def func(exp):
       1+2*4/5
       把第一个乘法或者除法找出来,然后交给mul_div函数计算得到结果
           res = mul_div('2*4')
       再用结果来替换1+2*4/5的小算式
       循环上面的过程,直到把所有的乘法除法都计算完
       1+10-5
       如何解决加减法的问题

进阶需求:
   处理复杂的符号问题 1-2*4/-5
   去括号

3.今日内容

# 网络编程 http://www.cnblogs.com/Eva-J/articles/8244551.html
   # 网络基础
   # 基于tcp协议和ucp协议的socket
   # 解决tcp协议的粘包问题
   # 并发问题

# 网络基础
   # 未来的web框架的学习 未来的工作场景做铺垫

4.内容详细

# 1.两个运行中的程序如何传递信息?
   # 通过文件

# 2.两台机器上的两个运行中的程序如何通信?
   # 通过网络

# 网络应用开发架构
   # C/S 迅雷 qq 浏览器 飞秋 输入法 百度云 pycharm git VNC 红蜘蛛 各种游戏
       # client 客户端
       # server 服务端
   # B/S   淘宝 邮箱 各种游戏 百度 博客园 知乎 豆瓣 抽屉
       # browser 浏览器
       # server 服务端
   # 统一程序的入口

   # B/S和C/S架构的关系
       # B/S是特殊的C/S架构

# 网卡 :是一个实际存在在计算机中的硬件
# mac地址 :每一块网卡上都有一个全球唯一的mac地址
# 交换机 :是连接多台机器并帮助通讯的物理设备,只认识mac地址
# 协议 :两台物理设备之间对于要发送的内容,长度,顺序的一些约定

# ip地址
   # ipv4协议 位的点分十进制 32位2进制表示
   # 0.0.0.0 - 255.255.255.255

   # ipv6协议 6位的冒分十六进制 128位2进制表示
   # 0:0:0:0:0:0-FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
# 公网ip
# 为什么你的外地朋友的电脑我们访问不了
   # 每一个ip地址要想被所有人访问到,那么这个ip地址必须是你申请的

# 内网ip
   # 192.168.0.0 - 192.168.255.255
   # 172.16.0.0 - 172.31.255.255
   # 10.0.0.0 - 10.255.255.255

# 交换机实现的arp协议
   # 通过ip地址获取一台机器的mac地址

# 网关ip 一个局域网的网络出口,访问局域网之外的区域都需要经过路由器和网关
# 网段 指的是一个地址段 x.x.x.0 x.x.0.0 x.0.0.0
# ip地址
# 子网掩码 判断两台机器是否在同一个网段内的

# 255.255.255.0 子网掩码
# 11111111.11111111.11111111.00000000

# 192.168.12.87
# 11000000.10101000.00001100.01010111
# 11111111.11111111.11111111.00000000
# 11000000.10101000.00001100.00000000   192.168.12.0

# 192.168.12.7
# 11000000.10101000.00001100.00000111
# 11111111.11111111.11111111.00000000
# 11000000.10101000.00001100.00000000 192.168.12.0

# ip 地址能够确认一台机器
# port 端口
   # 0-65535
   # 80
# ip + port 确认一台机器上的一个应用
posted @ 2020-05-27 20:35  投降输一半!  阅读(116)  评论(0编辑  收藏  举报