紀錄一些,實用的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]
\u4e00
到 \u9fa5
之間的字符,這個範圍包括了大部分常用的中文字符。re.compile(r"[\u4e00-\u9fa5]")
將正則表達式模式編譯成一個 pattern
對象。pattern.search(text)
用來在字串 text
中搜尋是否有符合該模式的字符。bool(pattern.search(text))
將搜尋結果轉換為布林值,若找到中文字符,則返回 True
,否則返回 False
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_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_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
指向之前捕獲的標籤名稱。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}
: 匹配最後一個字節。