一、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-hant/n/316897.html