日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python基础(十一)--正则表达式

發布時間:2024/7/5 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python基础(十一)--正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? Python基礎(十一)--正則表達式

1 簡述

正則表達式可以對指定的字符串與模式之間執行模式匹配。模式可以是普通的字符串,也可以是含有特殊意義字符的字符串。通過正則表達式,我們可以進行查找,校驗等。

2 特殊字符

2.1 字符相關

下表字符匹配內容匹配單個字符。\?在Python中是轉義的開始,在正則表達式中也是轉義的開始。如果模式使用原始字符串,可以減少轉義的繁瑣性。

字符

說明

.

默認模式下,匹配除換行符(\n)之外的所有單個字符。在S(DOTALL)模式下,匹配所有單個字符。

[字符]

匹配[]內的任意一個字符。[]中可以是單個字符,如[x9k],也可以是一個字符區間,如[a-k],[3-5]。如果需要匹配“-”,可以使用“\-”轉義,或者將該字符置于[]的兩端,如[-axk]或[axk-]。如果需要匹配“]”,可以使用“\]”轉義,或者將該字符置于[]的最前端,如[]axk]。

[^字符]

匹配不在[]內的任意一個字符,[]的取反匹配。

\d

如果是str類型,匹配Unicode十進制數字,這包括但不限于0?~ 9,例如0,?等字符,也能夠匹配成功。如果是bytes類型,匹配[0-9]。

\D

匹配非Unicode數字字符,\d的取反匹配。

\s

如果是str類型,匹配Unicode空白符,這包括但不限于[空格\t\v\r\n\f]。如果是bytes類型,匹配[空格\t\v\r\n\f]。

\S

匹配非Unicode空白字符,\s的取反匹配。

\w

如果是str類型,匹配Unicode單詞字符,這包括但不限于[a-zA-Z0-9_]。如果是bytes類型,則匹配[a-zA-Z0-9_]。

\W

匹配非Unicode單詞字符,\w的取反匹配。

\

轉義字符,對正則表達式的特殊字符進行轉義,例如,如果要匹配普通的“.”字符,則可以使用“\.”。

?

2.2 次數相關

字符

說明

*

匹配前面的字符0次或多次。

+

匹配前面的字符1次或多次。

?

匹配前面的字符0次或1次。

{m}

匹配前面的字符m次。

{m,}

匹配前面的字符至少m次。

{,n}

匹配前面的字符至多n次。

{m,n}

匹配前面的字符m到n次。

X?

X表示以上的任意一種模式({m}除外),即在對應的模式字符串后面加上一個問號?,表示該模式的非貪婪模式(否則為貪婪模式)。貪婪模式與非貪婪模式的區別在于:貪婪模式會盡可能匹配最多的字符,而非貪婪模式會盡可能匹配最少的字符。

?

2.3 邊界相關

字符

說明

^

匹配字符串的開頭。在多行模式下,可以匹配每一行的開頭。

$

匹配字符串的結尾。在多行模式下,可以匹配每一行的末尾。

\A

僅匹配字符串的開頭。

\Z

僅匹配字符串的末尾。

\b

匹配單詞的邊界。單詞可以含有Unicode字符、數字與下劃線組成(\w+匹配的內容)。\b匹配的是空串,該空串可以出現在\w(\W)與\W(\w)之間、字符串開頭與\w之間或\w與字符串結尾之間。

\B

匹配單詞的非邊界。\B匹配的是空串,該空串必須出現在兩個\w之間。\B是\b的取反匹配。

?

2.4 組相關

字符

說明

()

對()內的字符進行分組。分組后,該組匹配的內容可以單獨提取,同時,也可以在模式字符串后面使用\number進行引用。

\number

number用來指定組序號,序號從1開始。用來匹配number對應的分組內容。

(?:表達式)

匹配()內的字符,但是不會進行分組。()內匹配的內容也無法單獨提取,或者在后面使用\number引用。

(?P<name>表達式)

對()內的字符進行分組,組名為name,多個組之間的名稱不能重復。分組后,該組匹配的內容可以單獨提取,同時,也可以在模式字符串后面使用(?P=name)或\number進行引用。對比之前()進行的序號分組,此種方式可以稱為命名分組。不過,命名分組依然也可以使用序號(\number)進行引用。

(?P=name)

用來匹配同名的分組內容【之前使用(?P<name>)進行的分組】。

|

用來連接兩個并列的模式字符串,匹配其中的一個即可。

?

2.5 控制標記

re模塊正則表達式的第三個參數flag的使用。(3.6后,使用RegexFlag對象)

I(IGNORECASE):忽略大小寫

M(MULTILINE):匹配所有的字符

S(DOTALL):多行模式

?

3 相關屬性和方法

3.1 re模塊的函數

re模塊提供的函數功能search,match等,使用re.compile編譯后返回的正則表達式也提供相應的功能,他們的區別為:①重復使用同一個模式進行匹配不同目標。使用正則表達式對象編譯后,會提高一定的性能因為不需要對同一個模式進行重復編譯。②使用正則表達式對象訪問方法時,可以指定開始與結束區間,re無此功能

函數描述
re.compile()參數1:模式,參數2:控制標記。根據參數提供的模式與控制標記,編譯返回一個正則表達式對象
re.search()使用正則表達式對象進行匹配查找
re.match與search功能相同,僅能從頭部進行進行查找
re.findall()查找所有匹配內容,返回一個列表
re.finditer()返回所有匹配的內容,返回一個迭代器,迭代器中的每一個對象是match對象(正則表達式匹配的對象)
re.split()參數1:切割模式,參數2:待切割的字符串,參數3:最大切割次數
re.sub()參數1:替換的模式(要替換的內容),參數2:替換后的內容,參數3:待搜索的字符串,參數4:最大替換次數。參數5;控制標記。返回替換之后的內容

?

3.2 正則表達式對象

正則表達式匹配之后,會返回一個match對象,具有的屬性方法如下:

屬性描述
string待匹配的文本
re匹配時使用的patter對象(正則表達式)
pos搜索文本的開始位置
endpos搜索文本的結束位置
方法描述
group()獲得匹配后的字符串
groups()返回一個元組,元組中的元素為所有分組的匹配結果
start()匹配字符串在原始字符串的開始位置
end()匹配字符串在原始字符串的結束位置
span()返回(.start(), .end())

?

總結

以上是生活随笔為你收集整理的Python基础(十一)--正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。