match多數使用在分組的情況中
輸入:
import re
p = re.compile(r'(\d+)-(\d+)-(\d+)') #使用r表示輸出的是不轉義的內容
print(p.match('2021-02-15').group(3))
print(p.match('2021-02-15').groups())
輸出:
15('2021', '02', '15')
如果出現需要匹配的元素**現字元的這種情況就無法匹配,則需要使用search
search表示從第乙個開始匹配,如果第乙個匹配不上,則向後繼續匹配直到匹配成功
輸入:
import re
p = re.compile(r'(\d+)-(\d+)-(\d+)') #使用r表示輸出的是不轉義的內容
print(p.search('aaa2021-02-15').groups())
輸出:
('2021', '02', '15')
替換函式sub()
import re
p = re.compile(r'(\d+)-(\d+)-(\d+)') #使用r表示輸出的是不轉義的內容
#print(p.search('aaa2021-02-15').groups())
phone = '123-456-789 #這是**號碼'
p2 = re.sub(r'#.*$','',phone) #表示匹配到最後乙個數字後把剩下的替換成空
print(p2)
p3 = re.sub(r'\d','',p2) #表示去掉 - 號
print(p3)
輸出:
123-456-789
123456789
元字元說明
.代表任意字元
\[ ]
匹配內部的任一字元或子表示式
[^]對字符集和取非
-定義乙個區間
\對下一字元取非(通常是普通變特殊,特殊變普通)
*匹配前面的字元或者子表示式0次或多次
*?惰性匹配上乙個
+匹配前乙個字元或子表示式一次或多次
+?惰性匹配上乙個
?匹配前乙個字元或子表示式0次或1次重複
匹配前乙個字元或子表示式
匹配前乙個字元或子表示式至少m次至多n次
匹配前乙個字元或者子表示式至少n次
?前乙個的惰性匹配
^匹配字串的開頭
\a匹配字串開頭
$匹配字串結束
[\b]
退格字元
\c匹配乙個控制字元
\d匹配任意數字
\d匹配數字以外的字元
\t匹配製表符
\w匹配任意數字字母下劃線
\w不匹配數字字母下劃線
一、校驗數字的表示式
二、校驗字元的表示式
三、特殊需求表示式
網域名稱:[a-za-z0-9][-a-za-z0-9](/.[a-za-z0-9][-a-za-z0-9])+/.?
interneturl:[a-za-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d$
**號碼(「***-******x」、」***x-******xx」、」***-******x」、」***-******xx」、」******x」和」******xx):^($$\d-)|\d-)?\d$
國內**號碼(0511-4405222、021-87888822):\d-\d|\d-\d
身份證號(15位、18位數字):^\d|\d$
短身份證號碼(數字、字母x結尾):^([0-9])(x|x)?$ 或 ^\d|[0-9x]|[0-9x]?$
帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-za-z][a-za-z0-9_]$
密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-za-z]\w$
強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[a-z]).$
日期格式:^\d-\d-\d
一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$
乙個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
錢的輸入格式:
xml檔案:^([a-za-z]+-?)+[a-za-z0-9]+\\.[x|x][m|m][l|l]$
中文字元的正規表示式:[\u4e00-\u9fa5]
雙位元組字元:[^\x00-\xff] (包括漢字在內,可以用來計算字串的長度(乙個雙位元組字元長度計2,ascii字元計1))
空白行的正規表示式:\n\s*\r (可以用來刪除空白行)
html標記的正規表示式:<(\s*?)[^>]*>.*?|<.*? /> (網上流傳的版本太糟糕,上面這個也僅僅能部分,對於複雜的巢狀標記依舊無能為力)
首尾空白字元的正規表示式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式)
Python正態性檢驗
在對資料建模前,很多時候我們需要對資料做正態性檢驗,進而通過檢驗結果確定下一步的分析方案。下面介紹 python 中常用的幾種正態性檢驗方法 kstest 是乙個很強大的檢驗模組,除了正態性檢驗,還能檢驗 scipy.stats 中的其他資料分布型別 對於正態性檢驗,我們只需要手動設定三個引數即可 ...
DELPHIER,正轉向PYTHON了
1 現在是雲計算時代了,需要學習一門適應該時代的語言,研究了很久,python是最佳選擇,排除了php,perl,ruby等,至於go語言,暫時只處於觀察中。python目前非常火,國際大公司有nasa,google,youtube,dropbox等,國內豆瓣都是用python的典型案例,炙手可熱的...
python 記負均正II
1 2 題目描述 3從輸入任意個整型數,統計其中的負數個數並求所有非負數的平均值,結果保留一位小數,如果沒有非負數,則平均值為0 4本題有多組輸入資料,輸入到檔案末尾,請使用while cin 讀入 5資料範圍小於1e6 6輸入描述 7輸入任意個整數,每行輸入乙個。89 輸出描述 10輸出負數個數以...