re模块
语法
import re
# 使用match方法进行匹配操作
result=re.match(正则表达式,要匹配的字符串)
# 如果上面匹配到数据的话,要以使用group方法来提取数据
result.group()
单个字符匹配规则
字符 | 功能 |
---|---|
. | 匹配任意1个字符(除了\\n) |
[ ] | 匹配 [ ] 中列举的字符 |
\\d | 匹配数字,即 0~9 |
\\D | 匹配非数字 |
\\s | 匹配空白字符,即 空格、tab键 |
\\S | 匹配非空白 |
\\w | 匹配单词字符,即 a |
\\W | 匹配非单词字符 |
**多个字符匹配规则 **
字符 | 功能 |
---|---|
* | 匹配前一个字符出现0次或无限次,即可有可无 |
+ | 匹配前一个字符出现1次或者无限次,即 至少1次 |
? | 匹配前一个字符出现0次或1次,即 要么1次,要么没有 |
{m} | 匹配前一个字符出现m次 |
{m,n} | 匹配前一个字符出现从m到n次 |
匹配分组
字符 | 功能 |
---|---|
(ab) | 将括号中的字符作为一个分组 |
\\num | 引用分组 num匹配到字符串 |
(?P) | 分组起别名 |
(?P=name) | 引用别名为name分组匹配到的字符串 |
示例
import re
# 匹配单个字符
str_content="生化危机2"
t1=re.match(r"生化危机\\d",str_content)
print(t1.group())
# 匹配多个字符
str_content="孙悟空的手机是:13388888888"
t1=re.match(r"孙悟空的手机是:\\d{1,11}",str_content)
print(t1.group())
# 分组, 匹配邮箱,126、qq、163邮箱都可以, 邮箱中的 .需要使用 \ 转义
str_content="孙悟空的邮箱是:sunwukong@163.com"
t1=re.match(r"孙悟空的邮箱是:\\w+@(126|163|qq)\\.com",str_content)
print(t1.group())
re模块的高级用法
示例
# search 用法
str_content="孙悟空会72变"
t1=re.search(r"\\d+",str_content)
print(t1.group())
# 输出结果:72
# findall 用法
str_content="孙悟空会72变,猪八戒会36变,二郎神会36变"
t1=re.findall(r"\\d+",str_content)
print(t1)
# 输出结果:['72', '36', '36']
# sub 将匹配到的字符串进行替换
str_content="孙悟空会 36 变"
t1=re.sub(r"\\d+","72",str_content)
print(t1)
# 输出结果:孙悟空会 72 变
# split 根据匹配切割字符串,返回一个字符列表
str_content="孙悟空,猪八戒,沙和尚"
t1=re.split(r",",str_content)
print(t1)
# 输出结果:['孙悟空', '猪八戒', '沙和尚']
注:Python 中字符串前面加上 r 表示原生字符串
str_content="c:\\\\a"
# 不使用 r
t1=re.match("c:\\\\\\\\a",str_content)
print(t1.group())
# 使用 r
t1=re.match(r"c:\\\\a",str_content)
print(t1.group())
**输出结果
**
http协议
访问百度的示例
简单web服务器
import socket
def main():
# 创建tcp套接字
so_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定端口
so_server.bind(("",33333))
# 监听套接字
so_server.listen(128)
# 等待新客户端接连
new_socket,client_addr=so_server.accept()
#接收浏览器发过来的请求
request=new_socket.recv(1024)
print(request)
# 发送给浏览器数据
content="HTTP/ 1.2 xxx\\r\\n"
content+='\\r\\n'
content+="hello world!!"
new_socket.send(content.encode("utf-8"))
# 关闭
new_socket.close()
so_server.close()
if __name__ == '__main__':
main()
请求示例
全部0条评论
快来发表一下你的评论吧 !