導包:
import re
compile、match、search、findall、sub、split
re.compile(pattern[, flags])
用於編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用
成功返回乙個匹配的物件,否則返回none(從起始位置開始)
成功返回乙個匹配的物件,否則返回none。(掃瞄整個字串並返回第乙個成功的匹配)
print(re.search('www','www.swww.com'))#(0,3)
print(re.search('com','www.swww.com'))#(9,12)
findall(string[, pos[, endpos]]) 成功返回乙個列表,沒有則none
print(re.findall('www','wwww.swww.com')) #['wwww','www']
match 和 search 是匹配一次 findall 匹配所有
re.sub(pattern, repl, string, count=0, flags=0)用於替換字串中的匹配項。
repl : 替換的字串,也可為乙個函式。
string : 要被查詢替換的原始字串。
count : 模式匹配後替換的最大次數,預設 0 表示替換所有的匹配
s='a a1 a2 a3'
pattern=r'\d'
repl1='99'
m=re.sub(pattern,repl1,s)
print(m)
def func(pattern):
num=pattern.group()
sum=int(num)+1
return str(sum)
m=re.sub(pattern,func,s)
print(m)
#a a99 a99 a99
#a a2 a3 a4
re.split(pattern, string[, maxsplit=0, flags=0])按照能夠匹配的子串將字串分割後返回列表
maxsplit 分隔次數,maxsplit=1 分隔一次,預設為 0,不限制次數。
m=re.split(r',','a,a1,a2,a3')
print(m)
#['a', 'a1', 'a2', 'a3']
. 任意字元除\n
^ 開頭
$ 結尾
範圍 [0-9][a-z]
預定義\s 空白 (空格)
\b 邊界
\d 數字
\w 字母[0-9a-za-z_]
大寫反面 \d 非數字
量詞* >=0
+ >=1
? 0,1
固定m位
>=m
>=m <=n
text='a1anb22bgir33333f'
pattern=re.compile('[a-z][0-9]+[a-z]')
print(pattern.findall(text))
貪婪與非貪婪
量詞預設是貪婪,通過?變成非貪婪
m=re.match(r'a(\d+)','a123a') #a123
m=re.match(r'a(\d+?)','a123a') #a1
分組
(w|w|w)與[123]
re.match(r'\w@(163|qq|126)\.(com|cn)$',email)
phone='010-12345678'
m=re.match(r'(\d|\d)-(\d)$',phone)print(m.group()) #分組獲取匹配的內容print(m.group(1))print(m.group(2))
不引用分組的內容
msg=''
m=re.match(r'<[a-za-z0-9]+>(.+)$',msg)
print(m.group(1))#11111
引用分組匹配內容:
1.number \number
msg='
'm=re.match(r'<([a-za-z0-9]+)><([a-za-z0-9]+)>(.+)$',msg)
print(m.group(1))#html
print(m.group(2))#h1
print(m.group(3))#1111
2.?p《名字》 ?p=名字
msg='
'm=re.match(r'<(?p[a-za-z0-9]+)><(?p[a-za-z0-9]+)>(.+)$',msg)
print(m.group(1))#html
print(m.group(2))#h1
print(m.group(3))#1111
egrep 擴充套件正規則表示式 (筆記)
grep 正規則表示式分為 basic regexp 基本正規則表示式 extended regexp 擴充套件正規則表示式 grep a 2 表示匹配到的字元的後兩行也顯示 grep b 2 表示匹配到的字元的前兩行也顯示 grep c 2 表示匹配到的字元的前後兩行都顯示 字元匹配 表示任意乙個...
規則表示式的常用表示式
為了能夠更好地理解如何在c 環境中使用規則表示式,我寫出一些對你來說可能有用的,這些表示式在其他的環境中都被使用過,希望能夠對你有所幫助。羅馬數字 string p1 m d?c c dm l?x x lc v?i i vx string t1 vii match m1 regex.match t1...
正規表示式 規則表示式
今天學習了正規表示式的一些基礎知識,1.概念 首先了解了一下正規表示式的含義 一些便於計算機識別的規則,能夠快速方便地對字元進行操作。而對於計算機而言,也有一寫規則表示式,它是能令計算機讀懂的 所以對我們來說看起來比較費勁 也相當於計算機的常識,一遇到就知道你要幹什麼。2.建立正則物件 var re...