正則表達式是一個特殊的字符序列,用于判斷一個字符串是否與我們所設定的字符序列是否匹配,也就是說檢查一個字符串是否與某種模式匹配。
Python 自 1.5 版本起增加了re 模塊,它提供 Perl 風格的正則表達式模式。re 模塊使 Python 語言擁有全部的正則表達式功能。
下面通過實例,一步一步來初步認識正則表達式。
比如在一段字符串中尋找是否含有某個字符或某些字符,通常我們使用內置函數來實現,如下:
# 設定一個常量
a = '兩點水|twowater|liangdianshui|草根程序員|ReadingWithU'
# 判斷是否有 “兩點水” 這個字符串,使用 PY 自帶函數
print('是否含有“兩點水”這個字符串:{0}'.format(a.index('兩點水') > -1))
print('是否含有“兩點水”這個字符串:{0}'.format('兩點水' in a))
輸出的結果如下:
是否含有“兩點水”這個字符串:True
是否含有“兩點水”這個字符串:True
那么,如果使用正則表達式呢?
剛剛提到過,Python 給我們提供了 re 模塊來實現正則表達式的所有功能,那么我們先使用其中的一個函數:
re.findall(pattern, string[, flags])
該函數實現了在字符串中找到正則表達式所匹配的所有子串,并組成一個列表返回,具體操作如下:
import re
# 設定一個常量
a = '兩點水|twowater|liangdianshui|草根程序員|ReadingWithU'
# 正則表達式
findall = re.findall('兩點水', a)
print(findall)
if len(findall) > 0:
print('a 含有“兩點水”這個字符串')
else:
print('a 不含有“兩點水”這個字符串')
輸出的結果:
['兩點水']
a 含有“兩點水”這個字符串
從輸出結果可以看到,可以實現和內置函數一樣的功能,可是在這里也要強調一點,上面這個例子只是方便我們理解正則表達式,這個正則表達式的寫法是毫無意義的。為什么這樣說呢?
因為用 Python 自帶函數就能解決的問題,我們就沒必要使用正則表達式了,這樣做多此一舉。而且上面例子中的正則表達式設置成為了一個常量,并不是一個正則表達式的規(guī)則,正則表達式的靈魂在于規(guī)則,所以這樣做意義不大。
那么正則表達式的規(guī)則怎么寫呢?先不急,我們一步一步來,先來一個簡單的,找出字符串中的所有小寫字母。首先我們在 findall
函數中第一個參數寫正則表達式的規(guī)則,其中 [a-z]
就是匹配任何小寫字母,第二個參數只要填寫要匹配的字符串就行了。具體如下:
import re
# 設定一個常量
a = '兩點水|twowater|liangdianshui|草根程序員|ReadingWithU'
# 選擇 a 里面的所有小寫英文字母
re_findall = re.findall('[a-z]', a)
print(re_findall)
輸出的結果:
['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
+關注
關注
56文章
4783瀏覽量
84473 -
正則表達式
+關注
關注
0文章
26瀏覽量
3477
發(fā)布評論請先 登錄
相關推薦
評論