學習Python Day16 正規表示式

2021-10-25 02:14:14 字數 2818 閱讀 7150

正規表示式是一種工具:一種專門用做字串匹配的工具,能夠在某些情況下能讓字串的處理變得非常簡單。

匹配符號

1.普通字元

2.「.」 - 匹配任意乙個字元

3.\d - 匹配任意乙個數字字元

4.\d - 匹配任意乙個非數字字元

5.\s - 匹配任意乙個空白字元

6.\s - 匹配任意乙個非空白字元

7.\w - 匹配任意乙個數字、字母或者下劃線(不好用,非ascii碼中的字元都可以匹配)

8.[字符集] - 匹配字符集**現的任意乙個字元

9.[^字符集] - 匹配不在字符集中的任意乙個字元

注意:^在中,如果不是在開頭就表示這個符號本身

檢測符號

匹配符號要求乙個符號必須對應乙個字元,會影響字串長度的描述

檢測符號,不會匹配字元,也不會影響字串長度,它是在匹配成功的前提下對指定位置的字元進行檢測

1.\b - 檢測是否是單詞邊界

2.\b - 檢測是否不是單詞邊界

3.^ - 檢測是否是字串開頭

4.$ - 檢測是否是字串結尾

匹配次數

1.* - 0或多次(任意次數)

2.+ - 1次或多次(至少1次)

3.? - 0次或1次

4.{}

- 匹配n次

- 匹配m到n次

- 匹配至少m次

5.貪婪和非貪婪

在匹配字數不確定的時候匹配模式就兩種:貪婪(預設)和非貪婪(在不確定次數後面加?)

貪婪:在能匹配成功的前提下,匹配次數選最多的(+、、?、、、)

非貪婪:在能匹配成功的前提下,匹配次數選最少的(+?、?、??、?、?、?)

分組1.( )

用法一:整體操作次數

a(ab)

用法二:重複

\m - 重複前面第m個分組中匹配到的內容

用法三:捕獲

re.findall在獲取子串的時候,如果正則中有分組,只會獲取分組匹配到的結果

分支1.|

正則1|正則2|正則3|…

先用正則1進行匹配,如果匹配成功整個正則就匹配成功;如果失敗就用正則2進行匹配,

如果匹配成功整個正則就匹配成功;如果失敗就用正則3進行匹配,以此類推…

轉義符號

1.\在在正則中有特殊意義的符號前加\,讓這個符號在正則中功能消失

1.re.compile(正規表示式) - 編譯正規表示式,返回正則物件

re_obj = re.

compile

(r"\d"

)# 正規表示式物件.fullmatch(字串)

print

(re_obj.fullmatch(

"123"))

# re.fullmatch(正規表示式,字串)

print

(re.fullmatch(r"\d"

,"123"

))

2.匹配

fullmatch(正則,字串) - 讓整個字串和正則進行匹配,匹配失敗返回none,匹配成功返回匹配物件

match(正則,字串) - 讓字串開頭和正則進行匹配,匹配失敗返回none,匹配成功返回匹配物件

3.匹配物件

result = re.match(r"(\d)([a-z])"

,"12acb4561地方"

)print

(result)

# 1)匹配到的子串

# 匹配物件.group() / 匹配物件.group(0) - 獲取整個正則匹配到的子串

# 匹配物件.group(n) - 獲取第n個分組匹配到的子串

print

(result.group())

# 12acb

print

(result.group(1)

)# 12

# 2)匹配範圍 - 匹配到的子串在原字串中的下標範圍

# 匹配物件.span()

print

(result.span())

# (0, 5)

print

(result.span(2)

)# (2, 5)

4.查詢

search(正則, 字串) - 在字串查詢第乙個滿足正則的子串,如果找到了返回匹配物件,找不到返回none

findall(正則, 字串) - 獲取字串中所有滿足正則的子串,返回值是列表,列表中的元素是字串或者元祖,找不到返回空列表

finditer(正則, 字串)- 獲取字串中所有滿足正則的子串,返回值是迭代器,迭代器中的元素是匹配物件

# 2)findall

# 沒有分組:['123', '456']

print

(re.findall(r"\d"

,"fdvcd123db456考完放假哦"))

# 有乙個分組:['123', '456']

print

(re.findall(r"a(\d)"

,"fdvcda123dba456考完放假哦"))

# 有兩個或兩個以上的分組:[('da', '123'), ('ba', '456')]

print

(re.findall(r"([a-z])(\d)"

,"fdvcda123dba456考完放假哦"))

# 3)finditer

5.切割和替換

split(正則, 字串) - 將字串中滿足正則的子串作為切割點

sub(正則, 字串1, 字串2) - 將字串2中滿足正則的子串全部替換成字串1

人生苦短,我學python day16 正規表示式

一 正規表示式匹配符號 1.什麼是正規表示式 2.正則符號re str abc 規則 乙個字串有3個字元,分別是a b和c,如果符合結果不是none result fullmatch re str,abc print result 表示匹配乙個任意字元 d 匹配乙個任意數字 re str a db ...

Python Day1學習筆記

wk1 python 1.python概述 一種解釋性丶物件導向丶動態資料型別的高階程式語言。缺點 執行速度慢。web後端 網路爬蟲 自動化運維 自動化測試 資料分析 人工智慧 計算機在記憶體中以二進位制的形式儲存資料 2.進製 二進位制 0b 八進位制 0o 十進位制 0d 十六進製制 0x 01...

小白學習python Day3

與數學中的整數意義一致,可正可負,沒有範圍限制 pow x,y 計算x的y次方 十種進製表大形式 十進位制 二進位制 0b,0b 八進位制 0o,0o 十六進製制 0x,0x 帶有小數點及小數的數字,浮點數的取值範圍和小數精度都存在限制 浮點數間的運算存在不確定尾數 二進位制轉換問題 使用round...