re
模組基本介紹re
模組是 Python 用來處理正則表達式的標準模組。
正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
這些函式涵蓋了 re
模組中的大部分功能,可以滿足日常的文本處理需求。
re.match()
match = re.match(pattern, string)
Match
物件;否則返回 None
。re.match()
嘗試從字串的起始位置匹配模式,這裡檢查 text
是否以 "Hello" 開頭。import re
text = "Hello, world!"
pattern = r'^Hello'
# 檢查字串是否以 "Hello" 開頭
match = re.match(pattern, text)
if match:
print("The string starts with 'Hello'")
else:
print("No match")
# 輸出
# The string starts with 'Hello'
re.search()
search = re.search(pattern, string)
Match
物件;否則返回 None
。re.search()
在字串中搜尋第一次出現的 "hello"。
import re
text = "Say hello to the world"
pattern = r'hello'
# 在字串中搜尋 "hello"
search = re.search(pattern, text)
if search:
print(f"Found '{search.group()}' in the text!")
else:
print("No match")
# 輸出
# Found 'hello' in the text!
re.findall()
matches = re.findall(pattern, string)
re.findall()
返回字串中所有匹配的數字
import re
text = "My numbers are 123, 456, and 789."
pattern = r'\d+'
# 提取字串中的所有數字
numbers = re.findall(pattern, text)
print(numbers) # 輸出: ['123', '456', '789']
re.finditer()
matches = re.finditer(pattern, string)
Match
物件。findall()
類似,但返回 Match
物件,這樣你可以取得更多的匹配資訊。re.finditer()
返回一個可迭代物件,包含每個匹配的詳細資訊。
import re
text = "My numbers are 123, 456, and 789."
pattern = r'\d+'
# 找到所有數字並逐一打印
matches = re.finditer(pattern, text)
for match in matches:
print(f"Found {match.group()} at position {match.span()}")
#輸出
'''
Found 123 at position (15, 18)
Found 456 at position (20, 23)
Found 789 at position (29, 32)
'''
re.split()
parts = re.split(pattern, string)
re.split()
根據指定模式分割字串,這裡使用 ,
、;
和 |
作為分隔符。
import re
text = "apple, banana; orange|grape"
pattern = r'[;,|]'
# 根據逗號、分號或豎線來分割字串
fruits = re.split(pattern, text)
print(fruits) # 輸出: ['apple', ' banana', ' orange', 'grape']
re.sub()
result = re.sub(pattern, repl, string)
repl
替換字串中所有與模式匹配的部分,並返回替換後的字串。re.sub()
替換字串中所有與模式匹配的部分。
import re
text = "The price is 100 dollars"
pattern = r'\d+'
# 替換字串中的數字為 "###"
new_text = re.sub(pattern, '###', text)
print(new_text) # 輸出: "The price is ### dollars"
re.subn()
result, num_subs = re.subn(pattern, repl, string)
re.sub()
類似,但返回一個包含兩個元素的元組:替換後的字串和替換的次數。re.subn()
替換字串中的模式並返回替換後的字串及替換次數。
import re
text = "There are 2 cats and 3 dogs."
pattern = r'\d+'
# 替換字串中的數字為 "###" 並返回替換次數
new_text, num_subs = re.subn(pattern, '###', text)
print(new_text) # 輸出: "There are ### cats and ### dogs."
print(num_subs) # 輸出: 2
re.compile()
compiled_pattern = re.compile(pattern)
re.compile()
編譯正則表達式以便重複使用。
import re
pattern = re.compile(r'\d+')
text = "My number is 12345."
# 使用編譯好的正則表達式匹配數字
match = pattern.search(text)
if match:
print(f"Found number: {match.group()}") # 輸出: "Found number: 12345"
Match
物件Match
物件是 re.match()
、re.search()
、re.finditer()
等函式返回的結果,當有匹配時,它包含了匹配的詳細資訊。
常用屬性和方法:
group()
:返回匹配的字串或特定的群組。start()
:返回匹配的起始位置。end()
:返回匹配的結束位置。span()
:返回匹配的起始和結束位置作為一個元組。