#1 找出<h1>123fh</h1><h2>hado</h2>中所有标签内的字符串
import re
ret = re.findall(‘<.*?>(.*?)<.*?>‘, ‘<h1>123fh</h1><h2>hado</h2>‘)
print(ret)
#2 找出四则运算表达式中的第一个乘除法
\d+(\.\d+)?[*/]-?\d(\.\d+)
#3 检测用户输入的内容是否是一个合法的身份证号
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)
两个运行中的程序如何传递信息?
两台机器上的两个运行中的程序如何通信?
IP地址:
公网IP
内网IP
交换机实现的arp协议
网关IP
网段
子网掩码
判断两台机器是否在同一个网段内 255.255.255.0 / 255.255.0.0 / 255.0.0.0
#子网掩码:255.255.255.0
#对应二进制:11111111.11111111.11111111.00000000
# A机器IP:192.168.12.87
# IP二进制:11000000.10101000.00001100.01010111
# 子网掩码:11111111.11111111.11111111.00000000
# 做与运算
11000000.10101000.00001100.00000000 → 192.168.12.0
# B机器IP:192.168.12.7
# IP二进制:11000000.10101000.00001100.00000111
# 子网掩码:11111111.11111111.11111111.00000000
# 做与运算
11000000.10101000.00001100.00000000 → 192.168.12.0
port 端口
IP + port 确认一台机器上的一个应用
目录结构
__init__.py
client.py
server.py
# server.py
import socket
sk = socket.socket() # 买手机
sk.bind((‘127.0.0.1‘, 9000)) # 绑定卡号 127.0.0.1永远表示当前使用机器的地址,不通过交换机。
sk.listen() # 开机
conn, addr = sk.accept() # 等着接电话
conn.send(b‘hellow‘) # 讲话
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()
# 习题
‘‘‘
编程计算器
n = ‘1-2*((60-30+(-45/5)*(9-2*5/3+7/3*99/4*2998+10*568/14)) - (-4*3)/(16-3*2))‘
‘‘‘
匹配最内层的表达式
\([^()]+\)
匹配乘除法
\d+(\.\d+)?[*/]-?\d+(\.\d+)?
匹配加减法
\d+(\.\d+)?[+-]-?\d+(\.\d+)?
def mul_div(exp):
# ‘1*2‘ ‘1/2‘ ‘1.2*2.4‘
pass
def func(exp):
# 1+2*4/5
# 把第一个乘法或者除法找出来,然后交给mul_div函数计算得到结果。
# 再用结果替换原算式 1+2*4/5
# 循环上面过程,直到把所有的乘除法计算完成。
进阶需求:
如何解决加减法?
如何去括号?
如何处理复杂的符号?
原文:https://www.cnblogs.com/elliottwave/p/12586207.html