在學習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.簡介 正規表示式是用於文字匹配的工具,它在源字串中查詢與給定的正規表示式相匹配的部分,乙個...