一、什麼是正規表示式?
正規表示式其實就是乙個用來匹配和提取字串的工具1、re.findall():將符合規則的字串以列表形式返回簡單來說就是:在一堆東西裡面提取我們想要的內容
正規表示式的模組是:re
import re
s = 'python123'
r = re.findall("python", s) #['python']
print(r)
二、元字元:. ^ $ {} * + ? | [ ]
1、. 萬用字元,除\n
import re
s1 = "python123"
s2 = "puthon123\n"
s3 = "puthon123\r"
r1 = re.findall(".", s1)
print(r1)
r2 = re.findall(".", s2)
print(r2)
r3 = re.findall(".", s3)
print(r3)
#修飾符re.s可以使.匹配包括換行在內的所有字元
r4 = re.findall(".", s2, re.s)
print(r4)
'''執行結果:
['p', 'y', 't', 'h', 'o', 'n', '1', '2', '3']
['p', 'u', 't', 'h', 'o', 'n', '1', '2', '3']
['p', 'u', 't', 'h', 'o', 'n', '1', '2', '3', '\r']
['p', 'u', 't', 'h', 'o', 'n', '1', '2', '3', '\n']
'''
2、^ 脫字元import re
s1 = "love123\nloveyou\nhhh"
print(s1)
r = re.findall("^love", s1) #修飾符re.m表示可以多行匹配
print(r)
r = re.findall("^love", s1, re.m)
print(r)
'''執行結果:
love123
loveyou
hhh['love']
['love', 'love']
'''
3、$ 結束位置import re
s1 = "python\npyt\nthon"
print(s1)
r = re.findall("pyt$", s1)
print(r) #
r = re.findall("thon$", s1, re.m)
print(r) # ['thon', 'thon']
'''執行結果:
python
pytthon
['thon', 'thon']
'''
4、 * + ?:匹配前面的表示式次數分別為(0-n)(1-n)(0-1)import re
s1 = "z\nzo\nzoo"
r = re.findall("zo*", s1, re.m)
print(r) # ['z', 'zo', 'zoo']
r = re.findall("zo+", s1, re.m)
print(r) # ['zo', 'zoo']
r = re.findall("zo?", s1, re.m)
print(r) # ['z', 'zo', 'zo']
5、{}控制表示式次數import re
s1 = "z\nzo\nzoo"
r = re.findall("zo*", s1, re.m)
print(r) # ['z', 'zo', 'zoo']
r = re.findall(r"zo", s1, re.m)
print(r)
r = re.findall("zo+", s1, re.m)
print(r) # ['zo', 'zoo']
r = re.findall("zo", s1, re.m)
print(r)
r = re.findall("zo?", s1, re.m)
print(r) # ['z', 'zo', 'zo']
r = re.findall("zo", s1, re.m)
print(r) # ['z', 'zo', 'zo']
r = re.findall("zo", s1, re.m)
print(r) # ['zoo']
6、[ ]字元組:控制的是匹配內容import re
s = "test\ntesting\nzoo"
r = re.findall("[eio]", s, re.m)
print(r)
r = re.findall("[e-o]", s, re.m) # efghijklmno
print(r) # ['e', 'e', 'i', 'n', 'g', 'o', 'o']
# ^r = re.findall("^[eio]", s, re.m)
print(r) #
r = re.findall("[^eio]", s, re.m) # 匹配未包含的字元範圍
print(r) # ['t', 's', 't', '\n', 't', 's', 't', 'n', 'g', '\n', 'z']
r = re.findall("[^e-o]", s, re.m) # 匹配未包含的字元範圍
print(r) # ['t', 's', 't', '\n', 't', 's', 't', '\n', 'z']
7、|: 選擇元字元import re
s = "p\npython\nhello"
r1 = re.findall("p|hello", s, re.m) #['p', 'p', 'hello']
print(r1)
r2 = re.findall("[h|l]o", s, re.m)
print(r2) #['ho', 'lo']
8、分組元字元:() 將括號內的表示式定義為組import re
s = "p\npoo\nhool"
r1 = re.findall("[p|h]o*", s, re.m) #['p', 'poo', 'hoo']
print(r1)
r2 = re.findall("[p|h](o*)", s, re.m)
#在['p', 'poo', 'hoo']的基礎上再進行(o*)取值
print(r2) #['', 'oo', 'oo']
9、轉義元字元取消字串的轉義可以在前面加 r取消正則語法的轉義,加 \
import re
s1 = "p\tpython\thello"
s2 = r"p\tpython\thello"
print(s1) #p python hello
print(s2) #p\tpython\thello
import re
s = "z\nzo\nzoo"
# 取消字串的轉義可以在前面加r
# 取消正則語法的轉義,加\
print(s)
r1 = re.findall(".", s) #單行匹配
r2 = re.findall(".", s, re.m) #多行匹配,此時 . 表示萬用字元
r3 = re.findall("\.", s, re.m) #多行匹配,用了\取消轉義,此時 . 表示 .本身,故返回空
print(r1) #['z', 'z', 'o', 'z', 'o', 'o']
print(r2) #['z', 'z', 'o', 'z', 'o', 'o']
print(r3) #
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.簡介 正規表示式是用於文字匹配的工具,它在源字串中查詢與給定的正規表示式相匹配的部分,乙個...