正則表達(dá)式
re模塊
- 在 Python中,可以通過(guò)使用** re 模塊**的正則表達(dá)式來(lái)匹配字符串
語(yǔ)法
import re
# 使用match方法進(jìn)行匹配操作
result=re.match(正則表達(dá)式,要匹配的字符串)
# 如果上面匹配到數(shù)據(jù)的話,要以使用group方法來(lái)提取數(shù)據(jù)
result.group()
單個(gè)字符匹配規(guī)則
| 字符 | 功能 |
|---|---|
| . | 匹配任意1個(gè)字符(除了\\n) |
| [ ] | 匹配 [ ] 中列舉的字符 |
| \\d | 匹配數(shù)字,即 0~9 |
| \\D | 匹配非數(shù)字 |
| \\s | 匹配空白字符,即 空格、tab鍵 |
| \\S | 匹配非空白 |
| \\w | 匹配單詞字符,即 a |
| \\W | 匹配非單詞字符 |
**多個(gè)字符匹配規(guī)則 **
| 字符 | 功能 |
|---|---|
| * | 匹配前一個(gè)字符出現(xiàn)0次或無(wú)限次,即可有可無(wú) |
| + | 匹配前一個(gè)字符出現(xiàn)1次或者無(wú)限次,即 至少1次 |
| ? | 匹配前一個(gè)字符出現(xiàn)0次或1次,即 要么1次,要么沒有 |
| {m} | 匹配前一個(gè)字符出現(xiàn)m次 |
| {m,n} | 匹配前一個(gè)字符出現(xiàn)從m到n次 |
匹配分組
| 字符 | 功能 |
|---|---|
| (ab) | 將括號(hào)中的字符作為一個(gè)分組 |
| \\num | 引用分組 num匹配到字符串 |
| (?P) | 分組起別名 |
| (?P=name) | 引用別名為name分組匹配到的字符串 |
示例
import re
# 匹配單個(gè)字符
str_content="生化危機(jī)2"
t1=re.match(r"生化危機(jī)\\d",str_content)
print(t1.group())
# 匹配多個(gè)字符
str_content="孫悟空的手機(jī)是:13388888888"
t1=re.match(r"孫悟空的手機(jī)是:\\d{1,11}",str_content)
print(t1.group())
# 分組, 匹配郵箱,126、qq、163郵箱都可以, 郵箱中的 .需要使用 \ 轉(zhuǎn)義
str_content="孫悟空的郵箱是:sunwukong@163.com"
t1=re.match(r"孫悟空的郵箱是:\\w+@(126|163|qq)\\.com",str_content)
print(t1.group())
re模塊的高級(jí)用法
- search、findall、sub、split
示例
# search 用法
str_content="孫悟空會(huì)72變"
t1=re.search(r"\\d+",str_content)
print(t1.group())
# 輸出結(jié)果:72
# findall 用法
str_content="孫悟空會(huì)72變,豬八戒會(huì)36變,二郎神會(huì)36變"
t1=re.findall(r"\\d+",str_content)
print(t1)
# 輸出結(jié)果:['72', '36', '36']
# sub 將匹配到的字符串進(jìn)行替換
str_content="孫悟空會(huì) 36 變"
t1=re.sub(r"\\d+","72",str_content)
print(t1)
# 輸出結(jié)果:孫悟空會(huì) 72 變
# split 根據(jù)匹配切割字符串,返回一個(gè)字符列表
str_content="孫悟空,豬八戒,沙和尚"
t1=re.split(r",",str_content)
print(t1)
# 輸出結(jié)果:['孫悟空', '豬八戒', '沙和尚']
注:Python 中字符串前面加上 r 表示原生字符串
- 與大多數(shù)編程語(yǔ)言相同,正則表達(dá)式里使用 "" 作為轉(zhuǎn)義字符,這就可能會(huì)有反斜杠困擾。 如果你需要匹配的文本中有兩個(gè) "" ,那么使用正則表達(dá)式里面就需要使用四個(gè) "" (即 "\")
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())
**輸出結(jié)果
**

web服務(wù)器
http協(xié)議
- 在Web應(yīng)用中,服務(wù)器把網(wǎng)頁(yè)傳遞給瀏覽器,實(shí)際上就是把網(wǎng)頁(yè)的html代碼發(fā)送給瀏覽器,讓瀏覽器顯示出來(lái),而瀏覽器和服務(wù)器之間的傳輸協(xié)議是HTTP
- HTML 是一種用來(lái)定義網(wǎng)頁(yè)的文本,編寫網(wǎng)頁(yè)的代碼就是html語(yǔ)言
- **HTTP **是在網(wǎng)絡(luò)上傳輸html的協(xié)議,用于瀏覽器和服務(wù)器之間的通信
訪問(wèn)百度的示例

簡(jiǎn)單web服務(wù)器
import socket
def main():
# 創(chuàng)建tcp套接字
so_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 綁定端口
so_server.bind(("",33333))
# 監(jiān)聽套接字
so_server.listen(128)
# 等待新客戶端接連
new_socket,client_addr=so_server.accept()
#接收瀏覽器發(fā)過(guò)來(lái)的請(qǐng)求
request=new_socket.recv(1024)
print(request)
# 發(fā)送給瀏覽器數(shù)據(jù)
content="HTTP/ 1.2 xxx\\r\\n"
content+='\\r\\n'
content+="hello world!!"
new_socket.send(content.encode("utf-8"))
# 關(guān)閉
new_socket.close()
so_server.close()
if __name__ == '__main__':
main()
請(qǐng)求示例

-
模塊
+關(guān)注
關(guān)注
7文章
2817瀏覽量
52531 -
字符串
+關(guān)注
關(guān)注
1文章
594瀏覽量
22967 -
python
+關(guān)注
關(guān)注
56文章
4849瀏覽量
89236
發(fā)布評(píng)論請(qǐng)先 登錄
Labview與Web(二)---------------Web 服務(wù)器(原創(chuàng))
Labview與Web(二)---------------Web 服務(wù)器(原創(chuàng))
使用Python創(chuàng)建簡(jiǎn)單的FTP服務(wù)器
Python爬蟲與Web開發(fā)庫(kù)盤點(diǎn)
常見的嵌入式web服務(wù)器有哪些
如何實(shí)現(xiàn)對(duì)嵌入式WEB服務(wù)器系統(tǒng)的控制設(shè)計(jì)
如何在microPython上搭建一個(gè)簡(jiǎn)單的HTTP WEB服務(wù)器呢
使用IIS為Web內(nèi)容配置Web服務(wù)器權(quán)限
如何辨別Web服務(wù)器,應(yīng)用程序服務(wù)器,HTTP服務(wù)器
嵌入式web服務(wù)器
簡(jiǎn)單的嵌入式web服務(wù)器設(shè)計(jì)
嵌入式web服務(wù)器系統(tǒng)設(shè)計(jì),基于-ARM簡(jiǎn)單嵌入式WEB服務(wù)器系統(tǒng)設(shè)計(jì).doc
嵌入式web服務(wù)器系統(tǒng),嵌入式Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

Python-正則與簡(jiǎn)單web服務(wù)器
評(píng)論