[Python]Re正則表達式一些實用範例

閱讀時間約 6 分鐘

紀錄一些,實用的re正則表達式需要用時,就可以直接複製貼上。


檢查是否有中文字

import re
def contains_chinese(text):
pattern = re.compile(r"[\u4e00-\u9fa5]")
return bool(pattern.search(text))

text = "Hello 你好"
print(contains_chinese(text)) # 輸出: True

text = "Hello World"
print(contains_chinese(text)) # 輸出: False
  • 正則表達式模式: [\u4e00-\u9fa5]
    這個模式用來匹配 Unicode 範圍在 \u4e00\u9fa5 之間的字符,這個範圍包括了大部分常用的中文字符。
  • 函式解釋:
    • re.compile(r"[\u4e00-\u9fa5]") 將正則表達式模式編譯成一個 pattern 對象。
    • pattern.search(text) 用來在字串 text 中搜尋是否有符合該模式的字符。
    • bool(pattern.search(text)) 將搜尋結果轉換為布林值,若找到中文字符,則返回 True,否則返回 False


匹配Email地址

email_pattern = r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'
email = "example@mail.com"
email_match = re.match(email_pattern, email)
if email_match:
print("Email匹配結果:", email_match.group()) #輸出 example@mail.com

正則表達式模式:email_pattern = r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'

  • [a-zA-Z0-9_.+-]+: 匹配一個或多個字母、數字、底線 (_)、點 (.)、加號 (+) 或連字符 (-)。這表示Email地址的用戶名部分。
  • @: 匹配Email地址中的@符號。
  • [a-zA-Z0-9-]+: 匹配域名的第一部分,允許字母、數字和連字符。
  • \.: 匹配域名中的點 (.) 符號,因為點在正則表達式中是特殊字符,所以需要使用反斜杠來轉義。
  • [a-zA-Z0-9-.]+: 匹配域名的第二部分及後續部分,可以有點 (.) 和連字符。


匹配電話號碼

phone_pattern = r'\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}'
phone = "(123) 456-7890"
phone_match = re.match(phone_pattern, phone)

if phone_match:
print("電話號碼匹配結果:", phone_match.group()) #輸出 電話號碼匹配結果: (123) 456-7890
  • \(?: 匹配一個可選的左括號 (。括號需要轉義。
  • \d{3}: 匹配三個連續的數字。
  • \)?: 匹配一個可選的右括號 )
  • [-.\s]?: 匹配可選的連字符 (-)、點 (.) 或空格,[-.\s] 中的 \s 代表空白字符。
  • \d{3}: 匹配三個連續的數字。
  • [-.\s]?: 再次匹配可選的連字符、點或空格。
  • \d{4}: 匹配四個連續的數字。


網址(URL)匹配

url_pattern = r'https?://(?:www\.)?[-\w]+(?:\.\w[-\w]*)+'
url = "https://www.example.com"
url_match = re.match(url_pattern, url)
if url_match:
print("URL匹配結果:", url_match.group()) #URL匹配結果: https://www.example.com
  • https?://: 匹配 http://https://,問號 ? 表示 s 是可選的。
  • (?:www\.)?: 匹配可選的 www. 子域名,(?: ... ) 是非捕獲組,用於組合但不存儲匹配結果。
  • [-\w]+: 匹配域名的主要部分,可以包含字母、數字、下劃線 (_) 和連字符 (-)。
  • (?:\.\w[-\w]*)+: 匹配域名的後續部分,每部分以點 (.) 開頭,後面跟隨字母、數字或連字符。


匹配HTML標籤

html_pattern = r'<([a-zA-Z]+)([^>]*?)>(.*?)<\/\1>'
html = "<div class='test'>Hello World</div>"
html_match = re.match(html_pattern, html)

if html_match:
    print("HTML標籤匹配結果:", html_match.group())
#輸出 HTML標籤匹配結果: <div class='test'>Hello World</div>​
  • <([a-zA-Z]+): 匹配開頭的HTML標籤,([a-zA-Z]+) 捕獲標籤名稱,允許字母。
  • ([^>]*?): 匹配標籤中的屬性部分,非貪婪匹配 [^>]*?,允許任意字符但不包括 >
  • >(.*?)<\/\1>: 匹配標籤內的內容,(.*?) 是非貪婪匹配,並且使用 <\/\1> 匹配對應的閉合標籤,其中 \1 指向之前捕獲的標籤名稱。


匹配IPv4地址

ip_pattern = r'(\d{1,3}\.){3}\d{1,3}'
ip = "192.168.1.1"
ip_match = re.match(ip_pattern, ip)

if ip_match:
print("IPv4地址匹配結果:", ip_match.group())
  • \d{1,3}: 匹配1到3個數字,代表IP地址中的每個字節。
  • \.: 匹配點 (.),因為點在正則表達式中是特殊字符,所以需要使用反斜杠來轉義。
  • (\d{1,3}\.){3}: 匹配前三個字節,每個字節後面都有一個點,共出現三次。
  • \d{1,3}: 匹配最後一個字節。



112會員
172內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。 以下是正則表達式中常用符號的重點整理: 字元類別 (Character Classes) [abc]: 匹配 a、b 或 c 中
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
呈上篇[Python基礎]類別繼承(Inheritance) 中使用的super()並加以說明,此篇文章主要敘述使用super()有什麼好處及優點。 super():是一個內建函數,用來返回父類別的物件,以便你可以使用這個物件來呼叫父類別的方法或屬性。 這種做法的目的是在子類別中繼承並延續父類別
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
在 Python 中,tuple 與 List有一個關鍵的不同點:tuple 是不可變的,這意味著一旦創建了 tuple,就無法更改其內容。 這與 List的可變性形成了對比,list 可以新增、刪除或修改元素。 元素的意思: 元素:指的是 List 中的每一個獨立的項目或值。
避免 thread 競速(Race Condition)是多執行緒編程中常見的挑戰之一。 Race Condition 發生在多個執行緒同時訪問和修改共享資源時,因為執行緒之間的執行順序無法預測,可能會導致數據的不一致性或意外行為。 本文主要介紹如何使用Lock來避免此狀況出現。 首先先看沒
當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。 以下是正則表達式中常用符號的重點整理: 字元類別 (Character Classes) [abc]: 匹配 a、b 或 c 中
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
呈上篇[Python基礎]類別繼承(Inheritance) 中使用的super()並加以說明,此篇文章主要敘述使用super()有什麼好處及優點。 super():是一個內建函數,用來返回父類別的物件,以便你可以使用這個物件來呼叫父類別的方法或屬性。 這種做法的目的是在子類別中繼承並延續父類別
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
在 Python 中,tuple 與 List有一個關鍵的不同點:tuple 是不可變的,這意味著一旦創建了 tuple,就無法更改其內容。 這與 List的可變性形成了對比,list 可以新增、刪除或修改元素。 元素的意思: 元素:指的是 List 中的每一個獨立的項目或值。
避免 thread 競速(Race Condition)是多執行緒編程中常見的挑戰之一。 Race Condition 發生在多個執行緒同時訪問和修改共享資源時,因為執行緒之間的執行順序無法預測,可能會導致數據的不一致性或意外行為。 本文主要介紹如何使用Lock來避免此狀況出現。 首先先看沒
你可能也想看
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。