[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 = "[email protected]"
email_match = re.match(email_pattern, email)
if email_match:
print("Email匹配結果:", email_match.group()) #輸出 [email protected]

正則表達式模式: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}: 匹配最後一個字節。



119會員
201內容數
本業是影像辨識軟體開發,閒暇時間進修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來避免此狀況出現。 首先先看沒
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。