紀錄一些,實用的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}: 匹配最後一個字節。

















