2021 02 15 python正則小記

2021-10-19 10:56:27 字數 2780 閱讀 7375

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輸出負數個數以...