一、re模塊介紹
Python中的re模塊是一個正則表達式工具包,用於處理字元串的匹配、替換、分割等操作。re模塊提供了很多函數,可以方便地處理字元串,同時也提供了很多特殊字元和語法,用於模式匹配。
使用re模塊之前,需要先導入模塊:
import re
二、正則表達式的基本語法
正則表達式是由特殊字元和普通字元組成的字元串,可以用來匹配符合規則的文本。
以下是re模塊中常用的特殊字元:
.
:匹配任意字元,除了換行符。^
:匹配字元串的開頭。$
:匹配字元串的末尾。*
:匹配前面的字元出現0次或多次。+
:匹配前面的字元出現1次或多次。?
:匹配前面的字元出現0次或1次。{n}
:匹配前面的字元出現n次。{m,n}
:匹配前面的字元出現m到n次。[]
:匹配方括弧中的任意一個字元。\
:轉義字元。|
:匹配多個模式中的任意一個。()
:分組,可以將一組字元看做一個整體,與*、+、?、{}等搭配使用。
以下是一些常用的正則表達式:
- 匹配數字:
\d
- 匹配字母:
[a-zA-Z]
- 匹配空白字元:
\s
- 匹配非空白字元:
\S
- 匹配任意字元:
.
- 匹配郵箱:
\w+@\w+\.[a-zA-Z]{2,3}
- 匹配電話號碼:
1[3456789]\d{9}
三、re模塊中的常用函數
1. re.match(pattern, string)
嘗試從字元串的起始位置匹配一個模式,如果匹配成功,返回一個匹配對象。如果匹配不成功,則返回None。
import re
s = "Hello, World!"
pattern = "Hello"
result = re.match(pattern, s)
if result:
print(result.group()) # 輸出 "Hello"
else:
print("未匹配到任何內容")
2. re.search(pattern, string)
掃描整個字元串,查找與模式匹配的內容,如果匹配成功,返回一個匹配對象。如果匹配不成功,則返回None。
import re
s = "Hello, World!"
pattern = "World"
result = re.search(pattern, s)
if result:
print(result.group()) # 輸出 "World"
else:
print("未匹配到任何內容")
3. re.findall(pattern, string)
搜索字元串,以列表形式返回全部匹配的內容。
import re
s = "Hello, World! Hello, Python! Hello, Java!"
pattern = "Hello"
results = re.findall(pattern, s)
print(results) # 輸出 ["Hello", "Hello", "Hello"]
4. re.sub(pattern, repl, string)
替換字元串中的匹配項,並返回替換後的字元串。
import re
s = "Hello, World!"
pattern = "World"
replacement = "Python"
new_s = re.sub(pattern, replacement, s)
print(new_s) # 輸出 "Hello, Python!"
四、實戰應用
1. 替換字元串中的多個匹配項
可以使用sub函數實現的替換操作,例如替換句子中的所有母音字母為「*」:
import re
s = "Hello, World!"
pattern = "[aeiouAEIOU]"
replacement = "*"
new_s = re.sub(pattern, replacement, s)
print(new_s) # 輸出 "H*ll*, W*rld!"
2. 匹配多個模式
可以使用「|」操作符匹配多個模式。例如匹配以「Hello」或「Hola」開頭的句子:
import re
s = "Hello, World! Hola, Mundo!"
patterns = "Hello|Hola"
results = re.findall(patterns, s)
print(results) # 輸出 ["Hello", "Hola"]
3. 匹配郵政編碼
我們可以使用正則表達式匹配郵政編碼,並按照指定的格式輸出:
import re
postcode = "210012"
pattern = "(\d{3})(\d{3})"
replacement = r"\1-\2"
new_postcode = re.sub(pattern, replacement, postcode)
print(new_postcode) # 輸出 "210-012"
五、總結
正則表達式是一種強大的文本處理工具,re模塊提供了豐富的功能和語法,可以用於字元串的匹配、替換、分割等操作。熟練掌握正則表達式可以大大提高代碼的處理效率。
原創文章,作者:DKOXV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/316897.html