Python 爬蟲 - 正則表達式

 

「正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫爲regex、regexp或RE),計算機科學的一個概念。正則表達式一般被用來檢索、替換那些符合某個模式(規則)的文本。html

許多程序設計語言都支持利用正則表達式進行字符串操做。例如,在Perl中就內建了一個功能強大的正則表達式引擎。正則表達式這個概念最初是由Unix中的工具軟件(例如sed和grep)普及開的。正則表達式一般縮寫成「regex」,單數有regexp、regex,複數有regexps、regexes、regexen。」
 
 
以下分享兩個正則表達式相關有用的網站:
 
下面收集和整理了一些重點:
 
a. 經常使用的元字符

代碼正則表達式

說明json

.函數

匹配除換行符之外的任意字符工具

\w測試

匹配字母或數字或下劃線網站

\sspa

匹配任意的空白符設計

\dregexp

匹配數字

\b

匹配單詞的開始或結束

^

匹配字符串的開始

$

匹配字符串的結束


 


 

 

 

 

 

 

 

 

 

 

 

 

  • 經常使用反義詞

代碼/語法

說明

\W

匹配任意不是字母,數字,下劃線,漢字的字符

\S

匹配任意不是空白符的字符

\D

匹配任意非數字的字符

\B

匹配不是單詞開頭或結束的位置

[^x]

匹配除了x之外的任意字符

[^aeiou]

匹配除了aeiou這幾個字母之外的任意字符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 經常使用限定符

代碼/語法

說明

*

重複零次或更屢次

+

重複一次或更屢次

?

重複零次或一次

{n}

重複n次

{n,}

重複n次或更屢次

{n,m}

重複n到m次

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 b. 原子 (非打印字符/通用字符)

原子是正則表達式的最基本的組成單位,並且在每一個模式中最少包含一個原子。原子是由全部那些未顯示指定爲元字符的打印和非打印字符組成,因此在這裏將其詳細劃分爲五類進行介紹。

   ①普通字符做爲原子

  普通字符是編寫正則表達式時最多見的原子了,包括全部的大寫和小寫字母字符、全部數字等。例如,a——z、A——Z、0——9。

   ②一些特殊字符和元字符做爲原子

  任何一個符號均可以做爲原子使用,但若是這個符號在正則表達式中有一些特殊意義,咱們就必須使用轉義字符「\」取消它的特殊意義,將其變成一個普通的原子。例如,全部標點符號以及一些其餘符號,雙引號「」」、單引號「’」、「*」、「+」、「.」等,若是當原子就必須像\」、\’、\+和\.這樣使用。

   ③一些非打印字符做爲原子

  所謂的非打印字符,是一些在字符串中的格式控制符號,例如空格、回車及製表符號等。例以下表所示列出了正則表達式中經常使用的非打印字符及其含義。

元字符(經常使用的元字符)

        ④使用「通用字符類型」做爲原子

前面介紹的無論是打印字符仍是非打印字符做爲原子,都是一個原子只能匹配一個字符。而有時咱們須要一個原子能夠匹配一類字符,例如,匹配全部數字不是一個數字,匹配全部字母而不是一個字母,這時就要使用「通用字符類型」了。例以下表所示列出了正則表達式中經常使用「通用字符類型」及其含義。

        ⑤自定義原子表([])做爲原子

 

 

c.模式修正符(經常使用的模式修正符)

模式修正符就是幾個字母,咱們在每一個正則表達式中能夠一次使用一個,也能夠連續使用多個,每個具必定的意義。對整個正則表達式調優使用,也能夠說是對正則表達式功能的擴展。經常使用模式修正符有:

 

  1. i  - 正則內容在匹配時候不區分大小寫(默認是區分的)
  2. m - 在匹配首內容或者尾內容時候採用多行識別匹配
  3. s - 將轉義回車/n取消是爲單行匹配如.
  4. x - 忽略正則中的空白
  5. A - 強制從頭開始匹配
  6. D - 強制$匹配尾部無任何內容包括/n
  7. U - 禁止貪婪匹配 只跟蹤到最近的一個匹配符並結束,經常使用在採集程序上的正則表達式

 

d.貪婪模式與懶惰模式

正則表達式,表示重複字符,操做符,默認都是貪婪模式,'?,+,*,{}' 默認都會選擇貪婪模式,會最大長度匹配字符串(量詞默認首先最大匹配字符串,這些量詞有:+,*,?,{m,n} 。一開始匹配,就直接匹配到最長字符串)。要切換到懶惰模式(懶惰模式),就只是在該元字符,後面加多一個」?」 便可切換到非貪婪模式(儘量少地匹配所搜索的字符串)。

 

e.Python中經常使用的函數

  • compile()
  • match()
  • search()
  • split()
  • sub()
  • findall()
相關文章
相關標籤/搜索