標籤:nta 正則匹配 指定 標識 伺服器 .com int 否則 現在
正則補缺
findall
import re?# 沒有(),結果集中儲存完整匹配的內容# f = re.findall(‘abc‘, ‘abcdasabcakdjklasjabc‘)# 與上面的情況等價# f = re.findall(‘(abc)‘, ‘abcdasabcakdjklasjabc‘)# 按照正則進行完整匹配,但是結果集只顯示分組內容# f = re.findall(‘qq(abc)ww‘, ‘ahdakqqabcwwhsad‘)# 按照正則進行完整匹配,但是結果集中的元素時分組資訊組成的元組# f = re.findall(‘qq(abc)(ww)‘, ‘ahdakqqabcwwhsaqqabcwwd‘)# 滿足上面所有的規律# f = re.findall(‘(qq(abc)(ww))‘, ‘ahdakqqabcwwhsaqqabcwwd‘)# 匹配:‘a(hello)c‘ 或 ‘a(world)c‘# f = re.findall(‘a(hello|world)c‘, ‘sadahellocshdjaworldcsd‘)f = re.findall(‘(a(hello|world)c)‘, ‘sadahellocshdjaworldcsd‘)?print(f)
split
import re?c = re.compile(r‘\d‘)?s = ‘正則其實不難1但是學完之後2發現寫不出來3是這樣吧‘?# 按照正則規律進行切割,可以指定切割次數ret = c.split(s, 1)?print(ret)
sub
import re?‘‘‘c = re.compile(r‘\d‘)?# 使用特點內容替換正則匹配到的內容,可以指定替換次數ret = c.sub(‘ ‘, ‘how1are2you‘, 2)?print(ret)‘‘‘?def double(s): # print(s) return str(int(s.group()) * 2) ?# 可以人為的幹預正則替換的過程# 因此需要傳遞一個處理的(匿名)函數ret = re.sub(r‘\d‘, double, ‘how1are2you‘)print(ret)
轉義問題
import re? # 匹配所有正則文法中涉及的字元都需要轉義? ‘‘‘ # python: \\\\d \\\d r‘\\d‘ # re: \\d \\d \\d # 匹配: \d \d \d # c = re.compile(‘\\\\d‘) # c = re.compile(‘\\\d‘) # 推薦使用,否則你需要多寫好多 c = re.compile(r‘\\d‘)? s = c.search(‘\d‘)? if s: print(s.group()) ‘‘‘? ‘‘‘ c = re.compile(r‘\\b‘)? # 在匹配的字串中有特殊意義的字元也需要進行轉義 # 若不想轉義最好前面添加字元‘r‘ s = c.search(r‘\b‘)? if s: print(s.group()) ‘‘‘? # 瞭解 # c = re.compile(r‘\bhello‘) # 單獨匹配邊界,findall儲存的結果全都是空白 c = re.compile(r‘\b‘)? f = c.findall(‘hello,sdjaks‘)? print(f)
使用正則時,python字串有特殊意義的字元最好轉義
要匹配在正則文法中有特殊函數的字元,都需要進行轉義
字串前添加‘r‘,可以使其變為原始字元,不要考慮轉義問題
相關概念
TCP協議
說明:連線導向的、資料可靠、三向交握、四次揮手、傳輸速度稍慢
原理:見圖片tcp.png
樣本:類比http請求從百度伺服器擷取資料,見01-tcp-http.py
TCP協議的伺服器與用戶端:見02-tcp-server.py、03-tcp-client.py
UDP協議
說明:面向無串連、資料不可靠、傳輸速度較快,適應於對資料要求不太嚴格的情況。
原理:見圖片udp.png
樣本:採用udp協議類比飛秋髮送簡訊,見04-udp-feiqiu.py
UDP協議的伺服器與用戶端:見05-udp-server.py、06-udp-client.py
正則補缺~~~|網路編程