Python正則表達式保姆式教學,帶你精通大名鼎鼎的正則


正則作為處理字符串的一個實用工具,在Python中經常會用到,比如爬蟲爬取數據時常用正則來檢索字符串等等。正則表達式已經內嵌在Python中,通過導入re模塊就可以使用,作為剛學Python的新手大多數都聽說”正則“這個術語。

今天來給大家分享一份關於比較詳細的Python正則表達式寶典,學會之后你將對正則表達式達到精通的狀態。

 

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過后,不知道在哪里尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那么針對這三類人,我給大家提供一個好的學習平台,免費領取視頻教程,電子書籍,以及課程的源代碼!
QQ群:701698587
歡迎加入,一起討論 一起學習!

 

 

 

一、re模塊

在講正則表達式之前,我們首先得知道哪里用得到正則表達式。正則表達式是用在findall()方法當中,大多數的字符串檢索都可以通過findall()來完成。

1.導入re模塊
在使用正則表達式之前,需要導入re模塊。

import re 

2.findall()的語法:

導入了re模塊之后就可以使用findall()方法了,那么我們必須要清楚findall()的語法是怎么規定的。

findall(正則表達式,目標字符串)

不難看出findall()的是由正則表達式和目標字符串組成,目標字符串就是你要檢索的東西,那么如何檢索則是通過正則表達式來進行操作,也就是我們今天的重點。

使用findall()之后返回的結果是一個列表,列表中是符合正則要求的字符串

二、正則表達式

(一).字符串的匹配

1.普通字符
大多數的字母和字符都可以進行自身匹配。

import re a = "abc123+-*" b = re.findall('abc',a) print(b)

輸出結果:

['abc']

2.元字符

元字符指的是. ^ $ ? + {} \ []之類的特殊字符,通過它們我們可以對目標字符串進行個性化檢索,返回我們要的結果。

這里我給大家介紹10個常用的元字符以及它們的用法,這里我先給大家做1個簡單的匯總,便於記憶,下面會挨個講解每一個元字符的使用。

 

(1) []

[] 的使用方式主要有以下三種:

  • 常用來指定一個字符集。
s = "a123456b"
rule = "a[0-9][1-6][1-6][1-6][1-6][1-6]b" #這里暫時先用這種麻煩點的方法,后面有更容易的,不用敲這么多[1-6] l = re.findall(rule,s) print(l) 

輸出結果為:

['a123456b']
  • 可以表示一個范圍。

例如要在字符串"abcabcaccaac"中選出abc元素:

s = "abcabcaccaac"
rule = "a[a,b,c]c" # rule = "a[a-z0-9][a-z0-9][a-z0-9][a-z0-9]c" l = re.findall(rule, s) print(l)

輸出結果為:

['abc', 'abc', 'acc', 'aac']
  • [] 內的元字符不起作用,只表示普通字符。

例如要在字符串“caabcabcaabc”中選出“caa”:

print(re.findall("caa[a,^]", "caa^bcabcaabc"))

輸出結果為:

['caa^']

注意點:當在[]的第一個位置時,表示除了a以外的都進行匹配,例如把[]中的和a換一下位置:

print(re.findall("caa[^,a]", "caa^bcabcaabc")) 

輸出:

['caa^', 'caab'] 

(2)^

^ 通常用來匹配行首,例如:

print(re.findall("^abca", "abcabcabc"))

輸出結果:

['abca']

(3) $
$ 通常用來匹配行為,例如:

print(re.findall("abc$", "accabcabc"))

輸出結果:

['abc']

(4)\

反斜杠后面可以加不同的字符表示不同的特殊含義,常見的有以下3種。

  • \d:匹配任何十進制數等價於[0-9]
print(re.findall("c\d\d\da", "abc123abc"))

輸出結果為:

['c123a']

\可以轉義成普通字符,例如:

print(re.findall("\^abc", "^abc^abc"))

輸出結果:

['^abc', '^abc']
  • s

匹配任何的空白字符例如:

print(re.findall("\s\s", "a c"))

輸出結果:

[' ', ' ']
  • \w

匹配任何字母數字和下划線,等價於[a-zA-Z0-9_],例如:

print(re.findall("\w\w\w", "abc12_"))

輸出:

['abc', '12_']


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM