正則表達式(Regular Expression,簡稱 Regex)是一種富強的文本處理東西,它容許我們經由過程定義特定的形式來婚配、查找、調換或驗證文本數據。在數據處理、文本分析、形式辨認等多個範疇,正則表達式都發揮著至關重要的感化。本文將深刻探究正則表達式的基本知識、實戰技能,並經由過程具體的案例剖析,幫助妳輕鬆控制這一神奇利器。
正則表達式基本
1. 正則表達式的構成
正則表達式由字元跟標記構成,重要包含以下多少類:
- 元字元:存在特別意思的標記,如
.
、^
、$
、*
、+
、?
、{}
、[]
、()
等。 - 字符集:用於婚配一類字元,如
[a-z]
、[0-9]
等。 - 量詞:用於指定婚配的次數,如
*
(零次或多次)、+
(一次或多次)、?
(零次或一次)等。 - 分組:用於將正則表達式中的部分外容視為一個團體,如
()
。
2. 常用正則表達式元字元
.
:婚配除換行符以外的咨意字元。^
:婚配輸入字元串的開端地位。$
:婚配輸入字元串的結束地位。*
:婚配前一個字元零次或多次。+
:婚配前一個字元一次或多次。?
:婚配前一個字元零次或一次。{}
:指定婚配的次數,如{3}
表示婚配前一個字元3次。
實戰案例剖析
1. 數據清洗
假設我們須要從以下文本中提取出電子郵件地點:
這是一段示例文本,包含多個電子郵件地點:example1@example.com、example2@example.com、example3@example.com。
我們可能利用正則表達式 r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
來婚配電子郵件地點。
import re
text = "這是一段示例文本,包含多個電子郵件地點:example1@example.com、example2@example.com、example3@example.com。"
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text)
print(emails)
輸出成果:
['example1@example.com', 'example2@example.com', 'example3@example.com']
2. 數據提取
假設我們須要從以下文本中提取出全部手機號碼:
聯繫人信息如下:張三,手機:13800138000;李四,手機:13900139000。
我們可能利用正則表達式 r'\b1[3-9]\d{9}\b'
來婚配手機號碼。
import re
text = "聯繫人信息如下:張三,手機:13800138000;李四,手機:13900139000。"
phone_numbers = re.findall(r'\b1[3-9]\d{9}\b', text)
print(phone_numbers)
輸出成果:
['13800138000', '13900139000']
3. 文本調換
假設我們須要將以下文本中的全部數字調換為星號:
這是一個示例文本,包含數字:1234567890。
我們可能利用正則表達式 r'\d'
來婚配數字,並利用 re.sub()
函數停止調換。
import re
text = "這是一個示例文本,包含數字:1234567890。"
replaced_text = re.sub(r'\d', '*', text)
print(replaced_text)
輸出成果:
這是一個示例文本,包含星號:**********。
經由過程以上實戰案例,我們可能看到正則表達式在文本處理中的富強功能。控制正則表達式,將使妳在數據處理、文本分析等範疇錦上添花。