介紹
1: 在開發(fā)中會(huì)有大量的字符串處理工作硅堆,其中經(jīng)常會(huì)涉及到字符串格式的校驗(yàn)。
-
正則表達(dá)式概述
正則表達(dá)式昭灵,又稱正規(guī)表示式吠裆、正規(guī)表示法、正規(guī)表達(dá)式烂完、規(guī)則表達(dá)式试疙、常規(guī)表示法(英語(yǔ):Regular Expression,在代碼中常簡(jiǎn)寫為regex抠蚣、regexp或RE)祝旷,是計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式使用單個(gè)字符串來(lái)描述嘶窄、匹配一系列匹配某個(gè)句法規(guī)則的字符串怀跛。在很多文本編輯器里,正則表達(dá)式通常被用來(lái)檢索柄冲、替換那些匹配某個(gè)模式的文本吻谋。
Regular Expression的“Regular”一般被譯為“正則”、“正規(guī)”现横、“常規(guī)”漓拾。此處的“Regular”即是“規(guī)則”、“規(guī)律”的意思长赞,Regular Expression即“描述某種規(guī)則的表達(dá)式”之意晦攒。
模塊操作
在Python中需要通過(guò)正則表達(dá)式對(duì)字符串進(jìn)行匹配的時(shí)候,可以使用一個(gè)模塊得哆,名字為re
-
re模塊的使用過(guò)程 image.png
- 說(shuō)明
re.match() 能夠匹配出以xxx開頭的字符串
表示字符
- 正則表達(dá)式的單字符匹配
字符 | 功能 |
---|---|
. | 匹配任意1個(gè)字符(\n) |
[ ] | 匹配[ ]中列舉的字符 |
\d | 匹配數(shù)字,即0-9 |
\D | 匹配非數(shù)字,即不是數(shù)字 |
\s | 匹配空白哟旗,即空格贩据,tab鍵 |
\S | 匹配非空白 |
\w | 匹配單詞字符栋操,即a-z,A-Z饱亮,0-9矾芙,_ |
\W | 匹配非單詞字符 |
-
實(shí)例
image.png
原始字符串
- 說(shuō)明
Python中字符串前面加上 r 表示原生字符串,
與大多數(shù)編程語(yǔ)言相同近上,正則表達(dá)式里使用""作為轉(zhuǎn)義字符剔宪,這就可能造成反斜杠困擾。假如你需要匹配文本中的字符""壹无,那么使用編程語(yǔ)言表示的正則表達(dá)式里將需要4個(gè)反斜杠"\":前兩個(gè)和后兩個(gè)分別用于在編程語(yǔ)言里轉(zhuǎn)義成反斜杠葱绒,轉(zhuǎn)換成兩個(gè)反斜杠后再在正則表達(dá)式里轉(zhuǎn)義成一個(gè)反斜杠。
Python里的原生字符串很好地解決了這個(gè)問(wèn)題斗锭,有了原始字符串地淀,你再也不用擔(dān)心是不是漏寫了反斜杠,寫出來(lái)的表達(dá)式也更直觀岖是。
表示數(shù)量
*
匹配前一個(gè)字符出現(xiàn)0次或者無(wú)限次帮毁,即可有可無(wú)
+
匹配前一個(gè)字符出現(xiàn)1次或者無(wú)限次,即至少有1次
?
匹配前一個(gè)字符出現(xiàn)1次或者0次豺撑,即要么有1次烈疚,要么沒有
{m}
匹配前一個(gè)字符出現(xiàn)m次
{m,}
匹配前一個(gè)字符至少出現(xiàn)m次
{m,n}
匹配前一個(gè)字符出現(xiàn)從m到n次
表示邊境
^
匹配字符串開頭
$
匹配字符串結(jié)尾
\b
匹配一個(gè)單詞的邊界
\B
匹配非單詞邊界
匹配分組
|
匹配左右任意一個(gè)表達(dá)式
(ab)
將括號(hào)中字符作為一個(gè)分組
\num
引用分組num匹配到的字符串
(?P<name>)
分組起別名
(?P=name)
引用別名為name分組匹配到的字符串