06.09 Python 正則表達式介紹 Regular Expressions

Python 正則表達式介紹 Regular Expressions

在Python中在一個字符串中查找一個字符串非常簡單

Python 正則表達式介紹 Regular Expressions

查找world,find函數返回位置6,若沒有找到,則返回-1。因為查找的字符串是固定的,所以可以用這種方法。如果查找的字符不是固定的,例如查找一個日期?查找郵箱?這個時候,我們就需要用到正則表達式(regular expression)。

使用正則表達式,首先需要導入 re 模塊,裡面有很多方法幫我們實現目的。例如以下例子,要查找年份

Python 正則表達式介紹 Regular Expressions

我們使用了re模塊的 search 方法,第二個參數是字符串,提供查找的數據源。請注意第一個參數,是一個 r'\\d\\d\\d\\d' 的形式。\\d 在正則表達式代表任何一個數字。連續4個 \\d 代表4個連續的數字。字符串前面加

r 是 raw 的意思,因為斜線 \\ 在字符串中有特殊的意義,需要加上r取消此意義。直接按字面意思傳遞給正則表達式引擎幫我們解析。

search 方法如果匹配到給定的正則表達式,則會返回一個對象 _sre.SRE_Match object,否則返回的是 None。通過search方法返回的對象,調用 group() 方法返回匹配的字符串2018,start() 和 end() 返回2018在原始字符串中的開始和結束索引(注意,結束索引的字符不包括在內,通過位置就可以用分片語法獲取要查找的字符串)。

r'\\d\\d\\d\\d' 也可以縮寫成 r'\\d{4}',4是前面的模式要重複的次數,用花括號括起來。如果是 \\d{4,} 這個意思呢? 代表重複 >=4 次。

如果是 \\d{2,4} 代表重複 2-4 次。

Python 正則表達式介紹 Regular Expressions

匹配字符集


Python 正則表達式介紹 Regular Expressions

現在正則表達式新加了 [a-z],然後跟著2個數字。[a-z]匹配的是從a到z任意一個字符,所以 group() 方法就返回 y12。

類似的 [0-9] 表示任意一個數字,[a-zA-Z] 表示不管大小寫,任意一個英文字母。

更多例子:

Python 正則表達式介紹 Regular Expressions

r'\\d+' 和 r'\\d{1,}' 意思一樣,都是至少有1個數字。

r'\\d*' 和 r'\\d{0,}' 意思一樣,都是0個或多個數字。

r'\\d?' 和 r'\\d{0,1}' 意思一樣,都是0個或1個數字。

比如 a*,有0個或者多個連續的a字符。b+有1個或者多個連續的b字符。

Python 正則表達式介紹 Regular Expressions


分享到:


相關文章: