python 正規表示式

2021-09-10 22:53:03 字數 2740 閱讀 4985

正規表示式為高階的文字模式匹配、抽取、與/或文字形式的搜尋和替換功能提供了基礎。正規表示式描述了模式的重複或者表述多個字元.

在編寫處理字串的程式或網頁時,經常有查詢符合某些複雜規則的字串的需要。正規表示式就是用於描述這些規則的工具。換句話說,正規表示式就是記錄文字規則的**。

match方法

match嘗試從字串的起始位置開始匹配;

-如果起始位置沒有匹配成功, 返回none;

-如果起始位置匹配成功, 返回乙個物件, 通過group方法獲取匹配的內容;

import re

aobj = re.match(r'we', 'wetoshello')

print(aobj) #輸出:<_sre.sre_match object; span=(0, 2), match='we'>

print(aobj.group()) #輸出:we

findall方法

findall會掃瞄整個字串, 獲取匹配的所有內容;

res = re.findall(r'\d\d', '閱讀數為2 點讚數為10')

print(res) #輸出:['10']

res = re.findall(r'\d', '閱讀數為2 點讚數為10')

print(res) #輸出:['2','1','0']

search方法

search會掃瞄整個字串, 只返回第乙個匹配成功的內容的sre物件;

如果起始位置沒有匹配成功, 返回none;

如果起始位置匹配成功, 返回乙個物件, 通過group方法獲取匹配的內容;

resobj = re.search(r'\d', '閱讀數為8 點讚數為10')

if resobj:

print(resobj.group()) #輸出:8

sub()方法: 對符合正則的內容進行替換;

split()方法: 指定多個分隔符進行分割;

**說明

.匹配除了\n之外的任意字元

\d匹配乙個數字字元, 等價於[0-9]

\d匹配任意非數字的字元,等價於[^0-9]

\sspace(廣義的空格: 空格, \t, \n, \r), 匹配單個任何的空白字元

\s匹配除了單個任何的空白字元

\w字母數字或者下劃線, [a-za-z0-9_]

\w除了字母數字或者下劃線, [^a-za-z0-9_]

**說明

*代表前乙個字元出現0次或者無限次; \d*, .*

+代表前乙個字元出現一次或者無限次; d+

?代表前乙個字元出現1次或者0次; 假設某些字元可省略, 也可以不省略的時候使用

前乙個字元出現m次;

前乙個字元至少出現m次; * == ; + ===

前乙個字元出現m次到n次; ? ===

**說明

|匹配|左右任意乙個表示式即可

(ab)

將括號中的字元作為乙個分組

\num

引用分組第num個匹配到的字串

(?p)

分組起別名

(?p=name)

引用分組的別名

^ :

如果沒有在裡面的時候, 代表以什麼開頭;

如果在裡面的時候,代表除了…之外;

\1 :

代表的是一定要與第乙個分組的內容保持一致, 否則不匹配;

匹配url位址

# 進行分組的時候, findall方法只返回分組裡面的內容;

# print(re.findall(pattern, url))

resobj = re.search(pattern, url)

if resobj:

# group方法會返回匹配的所有內容;

print(resobj.group())

# groups方法返回分組裡面的內容;

print(resobj.groups())匹配日期

import re

date = '2019-10-10'

pattern = r'\d(\-|\/|.)\d\1\d'

reobj = re.search(pattern, date)

if reobj:

print(reobj.group())

print(reobj.groups())

匹配使用者名稱

字串是否包含中文 [ ]表示匹配方括號的中任意字元,

\u4e00是unicode中漢字的開始,\u9fa5則是unicode中漢字的結束

import re

user = '西部開源123'

pattern = r'[\w\-\u4e00-\u9fa5]+'

print(re.findall(pattern, user))

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...