[Python]re 正則表達式基本介紹

更新於 發佈於 閱讀時間約 8 分鐘

re 模組基本介紹

re 模組是 Python 用來處理正則表達式的標準模組。

正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。

常用函式

這些函式涵蓋了 re 模組中的大部分功能,可以滿足日常的文本處理需求。

1. 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'​


2. 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!


3. 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']


4. 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)
'''



5. 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']


6. 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"


7. 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


8. 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():返回匹配的起始和結束位置作為一個元組。



留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
141會員
253內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2024/09/14
生成器表達式是 Python 中一種更簡潔的語法,專門用來創建生成器。它的語法與列表生成式類似,但將列表生成式中的方括號 [] 替換為小括號 ()。生成器表達式與生成器函數類似,具有「惰性評估」的特性,因此它只在需要時才生成元素,從而節省記憶體。 生成器的「惰性評估」(也叫延遲求值)指的是生成器不
Thumbnail
2024/09/14
生成器表達式是 Python 中一種更簡潔的語法,專門用來創建生成器。它的語法與列表生成式類似,但將列表生成式中的方括號 [] 替換為小括號 ()。生成器表達式與生成器函數類似,具有「惰性評估」的特性,因此它只在需要時才生成元素,從而節省記憶體。 生成器的「惰性評估」(也叫延遲求值)指的是生成器不
Thumbnail
2024/09/01
包含著日期型資料在許多不同領域的分析中都非常重要,特別是當數據涉及隨時間變化的趨勢、模式或週期時,例如房價,股票價格分析等等。 如何將一個日期欄位改為 DataFrame 的索引,你可以使用 set_index() 方法。 實作範例數據來源 處理步驟 確保日期欄位是 datetime
Thumbnail
2024/09/01
包含著日期型資料在許多不同領域的分析中都非常重要,特別是當數據涉及隨時間變化的趨勢、模式或週期時,例如房價,股票價格分析等等。 如何將一個日期欄位改為 DataFrame 的索引,你可以使用 set_index() 方法。 實作範例數據來源 處理步驟 確保日期欄位是 datetime
Thumbnail
2024/09/01
為了讓資料更適合進行後續的分析、建立模型,模型的決策準確性,資料探索與清理是資料分析過程中非常重要的步驟,主要目的在於確保資料的品質和可靠性。 因為前幾篇的例子中的資料,並沒有缺失值與重複值的部分,我另外找了一份有包含的資料來做案例分析,由於找到的資料沒有重複值的部分,故本文主要解釋處理缺失值的部
Thumbnail
2024/09/01
為了讓資料更適合進行後續的分析、建立模型,模型的決策準確性,資料探索與清理是資料分析過程中非常重要的步驟,主要目的在於確保資料的品質和可靠性。 因為前幾篇的例子中的資料,並沒有缺失值與重複值的部分,我另外找了一份有包含的資料來做案例分析,由於找到的資料沒有重複值的部分,故本文主要解釋處理缺失值的部
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
邏輯運算子 它們在許多情境下都是程式語言中重要的工具,用於進行條件判斷和控制流程 在日常中總會遇到有些需要思考判斷的問題,比如要買東西,就會考慮到CP值,東西要好且要便宜,就是and的概念,如果在一些比較複雜的狀況,例如想晚餐吃什麼,就會想火鍋或燒烤都行,這就是or的概念。
Thumbnail
邏輯運算子 它們在許多情境下都是程式語言中重要的工具,用於進行條件判斷和控制流程 在日常中總會遇到有些需要思考判斷的問題,比如要買東西,就會考慮到CP值,東西要好且要便宜,就是and的概念,如果在一些比較複雜的狀況,例如想晚餐吃什麼,就會想火鍋或燒烤都行,這就是or的概念。
Thumbnail
宣告變數 變數是程式中用來儲存和表示數據的標識符號​,並將變數存放在某個記憶體位子 可以用ID的方法查找變數存在哪個記憶體,此方法有利於以後查找問題用。 在大多數程式語言中,變數需要事先聲明(宣告)並賦值。 而Python是一種動態類型語言,不需要顯式宣告變數類型,而是在賦值時自動進行推斷。
Thumbnail
宣告變數 變數是程式中用來儲存和表示數據的標識符號​,並將變數存放在某個記憶體位子 可以用ID的方法查找變數存在哪個記憶體,此方法有利於以後查找問題用。 在大多數程式語言中,變數需要事先聲明(宣告)並賦值。 而Python是一種動態類型語言,不需要顯式宣告變數類型,而是在賦值時自動進行推斷。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News