1. 程式人生 > >少說話多寫程式碼之Python學習064——標準模組(正則表示式)

少說話多寫程式碼之Python學習064——標準模組(正則表示式)

Python中re模組包含的是對正則表示式的支援。正則表示式是一個很有趣,對處理字串作用比較大,我們可以花一點時間瞭解一下。
正則表示式是可以匹配文字片段的一組規則。最簡單的正則表示式就是一個字串,能匹配自身。比如字串a='迢遞嵩高下,歸來且閉關',可以匹配字串b='迢遞嵩高下,歸來且閉關'。
下面我們簡單看看正則表示式的一些基本規則。
1、萬用字元
正則表示式中一些特殊字元可以匹配多個字串。比如點號(.),可以匹配任意字元,出換行符外。正則表示式c=.飯,可以匹配'早飯','晚飯','吃飯'等。.號可以匹配任意字元,因此叫做萬用字元。

2、特殊字元轉義
在正則表示式中如果將特殊字元當作普通字元會遇到問題。比如,需要匹配字串'python.py',直接用的話,會匹配到'pythonapy'。因為.號是萬用字元,可以匹配任何字元。為了讓特殊字元和普通字元一樣,需要將其轉義。一般是加反斜槓,比如'python\\.py',這樣就只能匹配'python.py'了。

3、字符集
匹配任意字元,範圍太大了,我們有時需要縮小範圍。可以使用中括號中括住的的字串來作為指定範圍,這個叫字符集。字符集可以匹配包括中的任意字元。,比如'[勝敗]乃兵家常事',可以匹配,'勝乃兵家常事''敗乃兵家常事'。比如我們用[a-z]可以匹配小寫a至z的所有字元。
也可以使用邏輯非,比如'[^我滴神]',表示除:我、滴、神這三個字元外其他都滿足條件。

4、選擇符和子模式
如果我們想匹配比如'道不同不相為謀''道德經',此時不能使用萬用字元和字元集了,可以使用一種可以選擇的字元:(|),這樣寫'道不同不相為謀|道德經'
有時候,不需要對整個字串使用選擇運算子,而只需要一部分。這時使用圓括號括起來需要的部分,稱之為子模式。比如,上面例子可寫為
'道(不同不相為謀|德經)'

5、可選項和重複子模式
在上面的子模式後面加上?號,就變為可選項。比如這段,
'(黃河)?(長江)?之水天上來'
可匹配:
黃河之水天上來
長江之水天上來
黃河長江之水天上來
天上來

6、字串開始和結尾
匹配時如果我們知道這個字元的位置是開頭還是結尾,那麼效率會大大提高。比如,只想在開頭位置匹配'我',會這樣寫'^我',會匹配到'我言秋日勝春朝',但是不會匹配到'棄我去者,昨日之日不可留'。另外還有一些匹配的例子,比如我們平時的網址www開頭,可以用w+匹配。http可以用ht+p匹配。
正則表示式組合非常多,在我們實際使用中自己再總結吧。