python正则表达式相关知识有哪些
這篇文章主要為大家展示了“python正則表達式相關知識有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“python正則表達式相關知識有哪些”這篇文章吧。
正則表達式模塊
Python 有一個名為 的內置包re,可用于處理正則表達式。導入re模塊:
importre
Python中的正則表達式
導入re模塊后,您可以開始使用正則表達式。
例如:搜索字符串以查看它是否以“The”開頭并以“Spain”結尾:
importre
txt="TheraininSpain"x=re.search("^The.*Spain$",txt)ifx:
print("匹配成功!")else:
print("匹配失敗")
運行:
當然,你現在看不懂這個例子,既然手把手教學,并不會教大家一步登天。
正則表達式函數
findall() 函數
該findall()函數返回一個包含所有匹配項的列表。
例如:打印所有匹配項的列表
importre
txt="川川菜鳥啊菜鳥啊"x=re.findall("菜鳥",txt)print(x)
運行返回:
該列表按找到的順序包含匹配項。如果未找到匹配項,則返回一個空列表:
importre
txt="菜鳥并不菜"x=re.findall("川川",txt)print(x)if(x):
print("匹配成功了喲")else:
print("找不到這個呀!")
運行返回:
search() 函數
該search()函數在字符串中搜索匹配項,如果有匹配項,則返回一個Match 對象。如果有多個匹配項,則只返回匹配項的第一次出現。
例如:搜索字符串中的第一個空白字符:
importre
txt="菜鳥呢"x=re.search("\s",txt)print("第一個空格字符位于位置:",x.start())
運行結果:
如果未找到匹配項,None則返回該值:
importre
txt="天上飛的是菜鳥"x=re.search("川川",txt)print(x)
返回:
split() 函數
該split()函數返回一個列表,其中的字符串在每次匹配時被拆分。
例如:在每個空白字符處拆分
importre
txt="菜鳥學python"x=re.split("\s",txt)print(x)
運行返回:
您可以通過指定maxsplit 參數來控制出現次數
例如:僅在第一次出現時拆分字符串:
importre#Splitthestringatthefirstwhite-spacecharacter:txt="飛起來菜鳥們"x=re.split("\s",txt,1)print(x)
返回:
sub() 函數
該sub()函數用您選擇的文本替換匹配項。
例如:用只替換就
importre
txt="學python就找川川菜鳥"x=re.sub("就","只",txt)print(x)
運行:
您可以通過指定count 參數來控制替換次數 :
例如替換前 2 次出現:
importre
txt="學python就就就川川菜鳥"x=re.sub("就","只",txt,2)print(x)
返回:
元字符
列表符號
[] 用于一組字符
例如:#按字母順序查找“a”和“m”之間的所有小寫字符
importre
txt="applechuanchuan"#按字母順序查找“a”和“m”之間的所有小寫字符x=re.findall("[a-m]",txt)print(x)
運行:
轉義符
** 表示特殊序列(也可用于轉義特殊字符)
例如匹配所有數字:
importre
txt="我今年20歲了"#查找所有數字字符x=re.findall("\d",txt)print(x)
運行返回:
任意符號
. 可以任何字符(換行符除外)。
例如:搜索以“he”開頭、后跟兩個(任意)字符和一個“o”的序列
importre
txt="helloworld"#搜索以“he”開頭、后跟兩個(任意)字符和一個“o”的序列x=re.findall("he..o",txt)print(x)
運行返回:
開始符
^符號用于匹配開始。
importre
txt="川川菜鳥飛起來了"x=re.findall("^川",txt)ifx:
print("哇,我匹配到了")else:
print("哎呀,匹配不了啊")
運行:
結束符
$ 符號用于匹配結尾,例如:匹配字符串是否以“world”結尾
importre
txt="helloworld"#匹配字符串是否以“world”結尾x=re.findall("world$",txt)ifx:
print("匹配成功了耶")else:
print("匹配不到哦")
運行:
星號符
-
星號符用于匹配零次或者多次出現。
importre
txt="天上飛的是菜鳥,學python找川川菜鳥!"#檢查字符串是否包含“ai”后跟0個或多個“x”字符:x=re.findall("菜鳥*",txt)print(x)ifx:
print("匹配到了!")else:
print("氣死了,匹配不到啊")
運行:
加號符
+ 用于匹配一次或者多次出現
例如:檢查字符串是否包含“菜鳥”后跟 1 個或多個“菜鳥”字符:
importre
txt="飛起來了,菜鳥們!"#檢查字符串是否包含“菜鳥”后跟1個或多個“菜鳥”字符:x=re.findall("菜鳥+",txt)print(x)ifx:
print("匹配到了!")else:
print("煩死了,匹配不到")
運行:
集合符號
{} 恰好指定的出現次數
例如:檢查字符串是否包含“川”兩個
importre
txt="川川菜鳥并不菜!"#檢查字符串是否包含“川”兩個x=re.findall("川{2}",txt)print(x)ifx:
print("匹配到了兩次的川")else:
print("匹配不到啊,帥哥")
返回:
或符
| 匹配兩者任一
例如:匹配字符串菜鳥或者是我了
importre
txt="菜鳥們學會python了嗎?串串也是菜鳥啊!"x=re.findall("菜鳥|是我了",txt)print(x)ifx:
print("匹配到了哦!")else:
print("匹配失敗")
運行:
特殊序列
指定字符
\A : 如果指定的字符位于字符串的開頭,則返回匹配項。
例如:匹配以菜字符開頭的字符
importre
txt="菜鳥在這里"x=re.findall("\A菜",txt)print(x)ifx:
print("是的匹配到了")else:
print("匹配不到")
運行:
指定開頭結尾
\b 返回指定字符位于單詞開頭或結尾的匹配項 (開頭的“r”確保字符串被視為原始字符串)。
例如:匹配愛開頭
importre
txt="愛你,川川"x=re.findall(r"\b愛",txt)print(x)ifx:
print("匹配到了")else:
print("匹配不到")
運行:
又例如:匹配川結尾
importre
txt="愛你,川川"x=re.findall(r"川\b",txt)print(x)ifx:
print("匹配到了")else:
print("匹配不到")
運行:
匹配中間字符
\B 返回存在指定字符但不在單詞開頭(或結尾)的匹配項 (開頭的“r”確保字符串被視為“原始字符串”)
比如我匹配菜鳥:
importre
txt="我是菜鳥我是菜鳥啊"#檢查是否存在“ain”,但不是在單詞的開頭:x=re.findall(r"\菜鳥",txt)print(x)ifx:
print("匹配到了嘛!!")else:
print("匹配不到哇!")
運行:
但是你匹配結尾就會返回空,比如我匹配鳥:
importre
txt="川川菜鳥"#檢查是否存在“鳥”,但不是在單詞的末尾:x=re.findall(r"鳥\B",txt)print(x)ifx:
print("匹配到了哦")else:
print("找不到")
運行:
匹配數字
\d 返回字符串包含數字(0-9 之間的數字)的匹配項。
例如:
importre
txt="我今年20歲了啊"#檢查字符串是否包含任何位數(0-9的數字)x=re.findall("\d",txt)print(x)ifx:
print("哇哇哇,匹配到數字了")else:
print("找不到哦")
運行:
匹配非數字
\D 返回字符串不包含數字的匹配項
例如:
importre
txt="我今年20歲"#匹配任何非數字符號x=re.findall("\D",txt)print(x)ifx:
print("匹配到了,開心!")else:
print("匹配不到,生氣")
運行:
空格匹配
\s 返回一個匹配字符串包含空白空間字符的匹配項。
例如:
importre
txt="我是川川菜鳥"#匹配任何空格字符x=re.findall("\s",txt)print(x)ifx:
print("匹配到了")else:
print("匹配不到啊")
運行:
匹配非空格
\S 返回字符串不包含空格字符的匹配項
importre
txt="菜鳥是我了"#匹配任意非空字符x=re.findall("\S",txt)print(x)ifx:
print("匹配到了!")else:
print("匹配不到啊")
運行:
匹配任意數字和字母
返回一個匹配,其中字符串包含任何單詞字符(從 a 到 Z 的字符,從 0 到 9 的數字,以及下劃線 _ 字符)
例如:
importre
txt="菜鳥啊是串串呀"#在每個單詞字符(從a到z的字符,0-9的數字)返回匹配項,以及下劃線_字符):x=re.findall("\w",txt)print(x)ifx:
print("匹配到了啊")else:
print("匹配不到哇")
運行:
匹配任意非數字和字母
返回字符串不包含任何單詞字符的匹配項,在每個非單詞字符中返回匹配(不在A和Z之間的字符。“!”,“?”空白位等)
例如:
importre
txt="菜鳥是我嘛?我不信!!"#在每個非單詞字符中返回匹配(不在A和Z之間的字符。“!”,“?”空白位等):x=re.findall("\W",txt)print(x)ifx:
print("匹配到了!")else:
print("匹配不到啊")
運行:
匹配結尾
\Z 如果指定的字符位于字符串的末尾,則返回匹配項。
例如:
importre
txt="川川是菜鳥啊"x=re.findall("啊\Z",txt)print(x)ifx:
print("匹配到了哦!")else:
print("匹配不到")
集合套裝
指定符范圍匹配
例如集合:[arn]
importre
txt="TheraininSpain"x=re.findall("[arn]",txt)print(x)ifx:
print("匹配到了!")else:
print("匹配不到")
匹配任意范圍內小寫字母
返回任何小寫字符的匹配項,按字母順序在 a 和 n 之間。
例如:
importre
txt="helloworld"x=re.findall("[a-n]",txt)print(x)ifx:
print("匹配到了!")else:
print("匹配不到")
運行:
同樣的道理,依次其它情況如下:
[^arn] 返回除 a、r 和 n 之外的任何字符的匹配項
[0123] 返回存在任何指定數字(0、1、2 或 3)的匹配項
[0-9] 返回 0 到 9 之間任意數字的匹配項
[0-5][0-9] 返回 00 到 59 中任意兩位數的匹配項
[a-zA-Z] 按字母順序返回 a 和 z 之間的任何字符的匹配,小寫或大寫
[+] 在集合中,+, *, ., |, (), $,{} 沒有特殊含義,所以 [+] 的意思是:返回字符串中任意 + 字符的匹配項。這個我i舉個例子:
importre
txt="5+6=11"#檢查字符串是否有任何+字符:x=re.findall("[+]",txt)print(x)ifx:
print("匹配到了")else:
print("匹配不到")
運行:
匹配對象
匹配對象是包含有關搜索和結果的信息的對象。注意:如果沒有匹配,None將返回值,而不是匹配對象。
直接舉個例子:
執行將返回匹配對象的搜索
importre#search()函數返回一個Match對象:txt="helloworld"x=re.search("wo",txt)print(x)
運行:
Match 對象具有用于檢索有關搜索和結果的信息的屬性和方法:
span()返回一個包含匹配開始和結束位置的元組。 string返回傳遞給函數的字符串 group()返回字符串中匹配的部分
span函數
例如:打印第一個匹配項的位置(開始和結束位置)。正則表達式查找任何以大寫“S”開頭的單詞:
importre#搜索單詞開頭的大寫“S”字符,并打印其位置txt="TheraininSpain"x=re.search(r"\bS\w+",txt)print(x.span())
運行:
string函數
例如:打印傳遞給函數的字符串
importre#返回字符串txt="TheraininSpain"x=re.search(r"\bS\w+",txt)print(x.string)
group函數
例如:打印字符串中匹配的部分。正則表達式查找任何以大寫“S”開頭的單詞
importre#搜索單詞開頭的大寫“w”字符,并打印該單詞:txt="helloworld"x=re.search(r"\bw\w+",txt)print(x.group())
運行:
注意:如果沒有匹配,None將返回值,而不是匹配對象。
總結
以上是生活随笔為你收集整理的python正则表达式相关知识有哪些的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: glDrawElements参数在新旧版
- 下一篇: 环回接口 环回地址 环回路由