python基礎 正規表示式 python使用正則

2021-08-10 17:40:23 字數 4045 閱讀 9114

在學習python中如何使用正規表示式,我們先來了解下正規表示式

正規表示式本身也和python沒有什麼關係,就是匹配字串內容的一種規則。

官方定義:正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。

字元組

字元組 : [字元組]

正則待匹配字元

結果說明

[0123456789]

8true

在乙個字元組裡列舉合法的所有字元,字元組裡的任意乙個字元和」待匹配字元」相同都視為可以匹配

[0-9]

7true

也可以用-表示範圍,[0-9]就和[0123456789]是乙個意思

[a-z]

strue

同樣的如果要匹配所有的小寫字母,直接用[a-z]就可以表示

[a-z]

btrue

[a-z]就表示所有的大寫字母

[0-9a-fa-f]

etrue

可以匹配數字,大小寫形式的a~f,用來驗證十六進製制字元

元字元

. 匹配除換行符以外的任意字元

\w 匹配字母或數字或下劃線

\s 匹配任意的空白符

\d 匹配數字

\n 匹配乙個換行符

\t 匹配乙個製表符

\b 匹配乙個單詞的結尾

^ 匹配字串的開始

$ 匹配字串的結尾

\w 匹配非字母或數字或下劃線

\d 匹配非數字

\s 匹配非空白符

a|b 匹配字元a或字元b

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

[…] 匹配字元組中的字元

[^…] 匹配除了字元組中字元的所有字元

正則待匹配字元

結果說明

海.海燕海嬌海東

海燕海嬌海東

匹配所有」海.」的字元

^海.海燕海嬌海東

海燕只從開頭匹配」海.」

海.$海燕海嬌海東

海東只匹配結尾的」海.$」

量詞:

* 重複零次或更多次

+ 重複一次或更多次

? 重複零次或一次

重複n次

重複n次或更多次

重複n到m次

字符集[][^]

*轉義符 *

貪婪匹配

python中的正則使用

import re

# 返回所有滿足匹配條件的結果,放在列表裡

ret = re.findall('a', 'eva egon yuan')

print(ret) #結果 : ['a', 'a']

#search從左到右依次找,找到乙個就回來,需要使用group()獲取返回值

#如果re.search找不到,就返回none。使用group會報錯

ret = re.search('a', 'eva egon yuan')

if ret:

print(ret.group())

# match從頭開始匹配,匹配上了需要使用group來獲取返回值

# 匹配不上返回none,使用group會報錯

# 同search,不過盡在字串開始處進行匹配

ret = re.match('a', 'abc').group()

print(ret)

#結果 : 'a'

# 先按'a'分割得到''和'bcd',在對''和'bcd'分別按'b'分割

ret = re.split('[ab]', 'abcd')

print(ret) # ['', '', 'cd']

#將數字替換成'h',引數1表示只替換1個

ret = re.sub('\d', 'h', 'eva3egon4yuan4', 1)

print(ret) #evahegon4yuan4

#將數字替換成'h',返回元組(替換的結果,替換了多少次)

ret = re.subn('\d', 'h', 'eva3egon4yuan4')

print(ret)

# 將正規表示式編譯成為乙個 正規表示式物件,規則要匹配的是3個數字

obj = re.compile('\d')

#正規表示式物件呼叫search,引數為待匹配的字串

ret = obj.search('abc123eeee')

print(ret.group()) #結果 : 123

import re

# finditer返回乙個存放匹配結果的迭代器

ret = re.finditer('\d', 'ds3sy4784a')

print(ret) # 0x10195f940>

print(next(ret).group()) #檢視第乙個結果

print(next(ret).group()) #檢視第二個結果

print([i.group() for i in ret]) #檢視剩餘的左右結果

輸出如下:

e

:\python\python_sdk\python.exe e

:/python/py_pro/

1.複習.py

['a', 'a']aa

['', '', 'cd']

evahegon4yuan4

('evahegonhyuanh', 3)

1230x035a1e50>34

['7', '8', '4']

process finished with exit code 0

匹配標籤還可以在分組中利用?的形式給分組起名字

獲取的匹配結果可以直接用group(『名字』)拿到對應的值

如果不給組起名字,也可以用\序號來找到對應的組,表示要找的內容和前面的組內容一致

獲取的匹配結果可以直接用group(序號)拿到對應的值

ret = re.search("\w+","")

if ret:

print(ret.group())

ret = re.search("\w+","")

print(ret.group('tag_name')) #結果 :h1

print(ret.group()) #結果 :

#分組的命名和組的引用

ret = re.search(r"\w+","")

print(ret.group(1))

# 如果不給組起名字,也可以用\序號來找到對應的組,表示要找的內容和前面的組內容一致

# 獲取的匹配結果可以直接用group(序號)拿到對應的值

print(ret.group()) #結果 :

ret = re.findall(r"\w+","")

print(ret)

輸出如下:

e:\python\python_sdk\python.exe e:/python/py_pro/2.正則複習.py

h1h1

['h1']

process finished with exit code 0

Python 正規表示式(基礎)

正規表示式 regular expression 是乙個特殊的字串行,描述了一種字串匹配的模式可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串,或者是在指定的文章中,抓取特定的字串等。python處理正規表示式的模組是re模組,它是python語言擁有全部的正...

Python正規表示式基礎

直接給出字元就是精確匹配。特殊字元首先需要轉義如 d 匹配乙個數字,w 匹配乙個字母或者數字。123 d 可以匹配 1231 但是無法匹配 123a d d d 可以匹配到 123 w w w 可以匹配到 py3 表示任意乙個字元,py.可以表示py3 py 等 表示任意長個字元,表示至少乙個字元,...

python基礎(正規表示式)

正規表示式用於搜尋 替換和解析字串。正規表示式遵循一定的語法規則,使用非常靈活,功能強大。使用正規表示式編寫一些邏輯驗證非常方便,例如電子郵件位址格式的驗證。python提供了re模組實現正規表示式的驗證。1.簡介 正規表示式是用於文字匹配的工具,它在源字串中查詢與給定的正規表示式相匹配的部分,乙個...