内容回顾
re模块
- findall 找到所有符合规则的项目,并返回列表
- search 找到第一个符合规则的项,并返回一个对象
- match 从头开始 找到第一个符合规则的项,返回一个对象
- finditer 找到所有符合规则的项,并返回一个迭代器
- compile 预编译一个正则规则,节省多次使用同一个正则的便宜时间
- sub 替换 默认替换所有,可以使用替换深度参数
- subn 替换 返回元组
- split 根据正则规则切割,返回列表,默认不保留切掉的内容
分组
-
分组命名
(?P<组名>正则) -
引用分组
(?P=组名) -
findall和分组
#优先显示分组中的内容 (?:)取消这个分组的优先 -
split和分组
split会保留正则中分组内匹配到的内容 -
search和分组
#search分组中的内容 #通过索引取obj.group(1) #通过组名取obj.group(\'组名\')
元字符 量词 惰性符号
补充
-
[] [^] 带有特殊意义的元字符到了字符组内大部分都会取消它的特殊意义
-
会取消
[() + * .] - [(-)] -的位置决定了它的意义,写在字符组的第一个位置/最后一个位置表示一个普通的横杠,写在字符组的其他任何位置都表示一个范围
-
正则指引
#找出<h1>123fh</h1><h2>hado</h2>中所有标签的字符串 一般用于爬虫
import re
res = re.findall(\'<.*?>(.*?)<.*?>\',\'<h1>123fh</h1><h2>hado</h2>\')
print(res)
#找出四则运算表达式中的第一个乘除法
#+-*/
\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)
今日内容
网络编程
https://www.cnblogs.com/Eva-J/articles/8244551.html
- 网络基础
- 基于tcp协议和udp协议的socket
- 解决tcp协议的粘包问题
- 并发问题
网络基础
-
两个运行中的程序如何传递信息?
-
通过文件
-
-
两台机器上的两个运行中的程序如何通信?
- 通过网络
-
网络应用开发架构
- C/S 迅雷 qq 浏览器 飞秋 输入法 百度云 pycharm git VNC 红蜘蛛 各种游戏
- client 客户端
- server 服务端
- B/S 淘宝 邮箱 各种游戏 百度 博客园 知乎 豆瓣 抽屉
- browser 浏览器
- server 服务端
- 统一程序的入口
- B/S和C/S架构的关系
- B/S是特殊的C/S架构
- C/S 迅雷 qq 浏览器 飞秋 输入法 百度云 pycharm git VNC 红蜘蛛 各种游戏
-
网卡:是一个实际存在在计算机中的硬件
-
mac地址:是每一块卡上都拥有一个全球唯一的mac地址
-
交换机:是连接多态机器并帮助通讯的物理设备,只认识mac地址
-
协议:两台物理设备之间对于要发送的内容,长度,顺序的一些约定
-
IP地址
-
ipv4协议 4位的点分十进制 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地址能够确认一台机器
- Port 端口
- 0-65535
- IP + Port 确认一台机器上的一个应用
socket通信
server.py
import socket
sk = socket.socket() #买手机
sk.bind((\'127.0.0.1\',9000)) #绑定卡号
sk.listen() #开机
conn,addr = sk.accept() #等着接电话
conn.send(b\'hello\')
msg = conn.recv(1024)
print(msg)
conn.close() #挂电话
sk.close() #关机
###########
client.py
import socket
sk = socket.socket()
sk.connect((\'127.0.0.1\',9000))
msg = sk.recv(1024)
print(msg)
sk.send(b\'byebye\')
sk.close()