正則表達(dá)式是一個(gè)特殊的字符序列,用于判斷一個(gè)字符串是否與我們所設(shè)定的字符序列是否匹配,也就是說(shuō)檢查一個(gè)字符串是否與某種模式匹配。
Python 自 1.5 版本起增加了re 模塊,它提供 Perl 風(fēng)格的正則表達(dá)式模式。re 模塊使 Python 語(yǔ)言擁有全部的正則表達(dá)式功能。
下面通過(guò)實(shí)例,一步一步來(lái)初步認(rèn)識(shí)正則表達(dá)式。
比如在一段字符串中尋找是否含有某個(gè)字符或某些字符,通常我們使用內(nèi)置函數(shù)來(lái)實(shí)現(xiàn),如下:
# 設(shè)定一個(gè)常量
a = '兩點(diǎn)水|twowater|liangdianshui|草根程序員|ReadingWithU'
# 判斷是否有 “兩點(diǎn)水” 這個(gè)字符串,使用 PY 自帶函數(shù)
print('是否含有“兩點(diǎn)水”這個(gè)字符串:{0}'.format(a.index('兩點(diǎn)水') > -1))
print('是否含有“兩點(diǎn)水”這個(gè)字符串:{0}'.format('兩點(diǎn)水' in a))
輸出的結(jié)果如下:
是否含有“兩點(diǎn)水”這個(gè)字符串:True
是否含有“兩點(diǎn)水”這個(gè)字符串:True
那么,如果使用正則表達(dá)式呢?
剛剛提到過(guò),Python 給我們提供了 re 模塊來(lái)實(shí)現(xiàn)正則表達(dá)式的所有功能,那么我們先使用其中的一個(gè)函數(shù):
re.findall(pattern, string[, flags])
該函數(shù)實(shí)現(xiàn)了在字符串中找到正則表達(dá)式所匹配的所有子串,并組成一個(gè)列表返回,具體操作如下:
import re
# 設(shè)定一個(gè)常量
a = '兩點(diǎn)水|twowater|liangdianshui|草根程序員|ReadingWithU'
# 正則表達(dá)式
findall = re.findall('兩點(diǎn)水', a)
print(findall)
if len(findall) > 0:
    print('a 含有“兩點(diǎn)水”這個(gè)字符串')
else:
    print('a 不含有“兩點(diǎn)水”這個(gè)字符串')
輸出的結(jié)果:
['兩點(diǎn)水']
a 含有“兩點(diǎn)水”這個(gè)字符串
從輸出結(jié)果可以看到,可以實(shí)現(xiàn)和內(nèi)置函數(shù)一樣的功能,可是在這里也要強(qiáng)調(diào)一點(diǎn),上面這個(gè)例子只是方便我們理解正則表達(dá)式,這個(gè)正則表達(dá)式的寫法是毫無(wú)意義的。為什么這樣說(shuō)呢?
因?yàn)橛?Python 自帶函數(shù)就能解決的問(wèn)題,我們就沒(méi)必要使用正則表達(dá)式了,這樣做多此一舉。而且上面例子中的正則表達(dá)式設(shè)置成為了一個(gè)常量,并不是一個(gè)正則表達(dá)式的規(guī)則,正則表達(dá)式的靈魂在于規(guī)則,所以這樣做意義不大。
	那么正則表達(dá)式的規(guī)則怎么寫呢?先不急,我們一步一步來(lái),先來(lái)一個(gè)簡(jiǎn)單的,找出字符串中的所有小寫字母。首先我們?cè)?findall 函數(shù)中第一個(gè)參數(shù)寫正則表達(dá)式的規(guī)則,其中 [a-z] 就是匹配任何小寫字母,第二個(gè)參數(shù)只要填寫要匹配的字符串就行了。具體如下:
import re
# 設(shè)定一個(gè)常量
a = '兩點(diǎn)水|twowater|liangdianshui|草根程序員|ReadingWithU'
# 選擇 a 里面的所有小寫英文字母
re_findall = re.findall('[a-z]', a)
print(re_findall)
輸出的結(jié)果:
['t', 'w', 'o', 'w', 'a', 't', 'e', 'r', 'l', 'i', 'a', 'n', 'g', 'd', 'i', 'a', 'n', 's', 'h', 'u', 'i', 'e', 'a', 'd', 'i', 'n', 'g', 'i', 't', 'h']
	這樣我們就拿到了字符串中的所有小寫字母了。
	審核編輯:符乾江
- 
                                python
                                +關(guān)注
關(guān)注
56文章
4850瀏覽量
89309 - 
                                正則表達(dá)式
                                +關(guān)注
關(guān)注
0文章
28瀏覽量
3808 
發(fā)布評(píng)論請(qǐng)先 登錄
inline ASM(內(nèi)聯(lián)匯編)的細(xì)節(jié)分享
I1電流計(jì)算對(duì)不對(duì)?怎么推導(dǎo)不出來(lái)I1的表達(dá)式是圖中那樣
labview如何使用VISA串口資源查找的正則表達(dá)式提取串口的資源名稱?
基礎(chǔ)篇3:掌握Python中的條件語(yǔ)句與循環(huán)
Cubeide1.18.1在線調(diào)試改變\"現(xiàn)場(chǎng)表達(dá)式\"中的值提示找不到地址,為什么?
Cubeide1.18.1在線調(diào)試改變\"現(xiàn)場(chǎng)表達(dá)式\"中的值提示找不到地址是怎么回事?
干貨分享 | 零基礎(chǔ)上手!TSMaster圖形信號(hào)表達(dá)式實(shí)操指南
    
Cubeide1.18.1在線調(diào)試改變\"現(xiàn)場(chǎng)表達(dá)式\"中的值提示找不到地址,怎么解決?
Cubeide1.18.1在線調(diào)試改變\"現(xiàn)場(chǎng)表達(dá)式\"中的值提示找不到地址怎么解決?
Linux中文本處理命令的用法
    
利用棧結(jié)構(gòu)實(shí)現(xiàn)四則運(yùn)算的巧妙方法
Linux grep命令詳解
用表達(dá)式畫Coms電路,最近二周有比賽第一次接觸Cmos,主要用與或非門電路畫
深入解析Django路由層:從基礎(chǔ)配置到高效設(shè)計(jì)的全攻略
    
詳解nginx中的正則表達(dá)式
    
          
        
        
初識(shí) Python 正則表達(dá)式
                
 
           
            
            
                
            
評(píng)論