Python 正則使用

2021-10-07 05:46:31 字數 1900 閱讀 2211

單字修飾符:

1. . 匹配任意字元,除了換行符

2. 用來表示一組字元,單獨列出:[abc] 匹配 『a』,『b』或』c』

3. \d 匹配任意數字,等價於 [0-9].

4. \d 匹配任意非數字

5. \w 匹配字母數字及下劃線

6. \w 匹配非字母數字及下劃線

7. \s 匹配任意空白字元,等價於 [\t\n\r\f].

8. \s 匹配任意非空字元

數量修飾符

1.* 匹配0個或多個的表示式

2.+ 匹配1個或多個的表示式

3.? 匹配0個或1個由前面的正規表示式定義的片段

4. 前面字元出現m次

5. 前面字元出現至少m次

6.前面字元出現m~n次

邊界修飾符

1.^ 以…開始

2.$ 以…結尾

eg:『^abc』 匹配以abc開頭

『abc$』 匹配以abc結尾

分組修飾符

1.() 匹配括號內的表示式,也表示乙個組

2.\1 \2 匹配第1、2個分組的內容

eg:

(.

*):(.*

) \1 \2

貪婪模式非貪婪模式

貪婪模式:在整個表示式匹配成功的前提下,盡可能多的匹配 ( * );

非貪婪模式:在整個表示式匹配成功的前提下,盡可能少的匹配 ( ? );

python裡數量詞預設是貪婪的。

示例一 : 源字串:abbbc

使用貪婪的數量詞的正規表示式 ab* ,匹配結果: abbb。

* 決定了盡可能多匹配 b,所以a後面所有的 b 都出現了。

使用非貪婪的數量詞的正規表示式ab*?,匹配結果: a。

即使前面有 *,但是 ? 決定了盡可能少匹配 b,所以沒有 b。

示例二 : 源字串:aatest1

bbtest2

cc 使用貪婪的數量詞的正規表示式:.*

匹配結果:test1

bbtest2

這裡採用的是貪婪模式。在匹配到第乙個「

」時已經可以使整個表達

式匹配成功,但是由於採用的是貪婪模式,所以仍然要向右嘗試匹配,

檢視是否還有更長的可以成功匹配的子串。匹配到第二個「

」後, 向右再沒有可以成功匹配的子串,匹配結束,匹配結果為

「test1

bbtest2

」 使用非貪婪的數量詞的正規表示式:.*?

匹配結果:test1

正規表示式二採用的是非貪婪模式,在匹配到第乙個「

」 時使整個表示式匹配成功,由於採用的是非貪婪模式,

所以結束匹配,不再向右嘗試,匹配結果為「test1

」。

模式修飾符

regular expression

1.re.s 單行模式

2.re.m 多行模式

3.re.i 忽略大小寫

使用步驟:

re.complie()

compile 函式用於編譯正規表示式,生成乙個正規表示式pattern物件

pattern物件 = re.compile(正規表示式)

pattern物件.find all(html)

findall()

在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表。

Python正則使用示例

使用python從一段文字中使用正則匹配自己需要的文字,如果使用search,只會進行一次匹配,group 0 裡面的內容是全匹配,group 1 裡面的內容是括號裡面的子正則。如果需要全部匹配就使用findall,我這裡的就是全匹配,返回的是乙個列表,每一項內容就是括號裡的字正則匹配內容。usr ...

python正則re使用

1 import re 將正規表示式編譯成pattern物件 pattern re.compile r hello re.i 使用pattern匹配文字,獲得匹配結果,無法匹配時將返回none match pattern.match hello world if match 使用match獲得分組資...

python正則的使用

python的正則是通過re模組的支援 匹配的3個函式 match 只從字串的開始與正規表示式匹配,匹配成功返回matchobject,否則返回none re.match pattern,string,flags 0 flags 標誌位,用於控制正規表示式的匹配方式,如 是否區分大小寫,多行匹配等等...