Python(黄金时代)——正则与简单web服务器

正则表达式

re模块

  • 在 Python中,可以通过使用 re 模块的正则表达式来匹配字符串

语法

import re

# 使用match方法进行匹配操作
result=re.match(正则表达式,要匹配的字符串)

# 如果上面匹配到数据的话,要以使用group方法来提取数据
result.group()

单个字符匹配规则

字符 功能
. 匹配任意1个字符(除了\n)
[ ] 匹配 [ ] 中列举的字符
\d 匹配数字,即 0~9
\D 匹配非数字
\s 匹配空白字符,即 空格、tab键
\S 匹配非空白
\w 匹配单词字符,即 a~z 、A~Z、0~9、_、中文
\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="孙悟空的邮箱是:[email protected]"
t1=re.match(r"孙悟空的邮箱是:\w+@(126|163|qq)\.com",str_content)
print(t1.group())


re模块的高级用法

  • search、findall、sub、split

示例

# 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())

输出结果

 

web服务器

http协议

  • 在Web应用中,服务器把网页传递给浏览器,实际上就是把网页的html代码发送给浏览器,让浏览器显示出来,而浏览器和服务器之间的传输协议是HTTP
    • HTTP 是在网络上传输html的协议,用于浏览器和服务器之间的通信

    • HTML 是一种用来定义网页的文本,编写网页的代码就是html语言

访问百度的示例

Python(黄金时代)——正则与简单web服务器_第1张图片

简单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()

请求示例

Python(黄金时代)——正则与简单web服务器_第2张图片

 程序猿与投资生活实录已改名为  程序猿知秋,WX同款,欢迎关注!

你可能感兴趣的:(程序语言,python,python,前端,服务器)