Python正則表達式是一種方便、簡單、高效的文本匹配工具。它通過一系列複雜的規則來匹配和提取文本中的特定內容,這種方法非常靈活,可以幫助程序員處理各種不同的文本處理任務。
一、基本概念
正則表達式是一種描述文本模式的語言,用於在文本中匹配特定的字符組合。它在Python中被廣泛使用,為文本處理帶來了很多便利。
在正則表達式中有一些基本的符號代表不同的字符,比如「.」代表任意一個字符,「\d」代表任意一個數字等等。除此之外,還有一些特殊符號和語法,用於描述匹配規則、字符集、量詞等等。
下面是一個簡單的正則表達式例子,匹配所有以字母a開頭、字母b結尾的單詞:
import re text = "ababccca" pattern = r"a.*?b" result = re.findall(pattern, text) print(result) #輸出:['ab', 'ab']
通過使用re模塊中的findall函數,可以方便地從文本中取出滿足正則表達式要求的所有字符串。
二、常用語法
正則表達式中有很多不同的語法,以下介紹幾種最常見的語法:
1. 字符
最基本的正則表達式是由單個字符組成的。比如,正則表達式「a」匹配所有的字符a:
import re text = "abcde" pattern = r"a" result = re.findall(pattern, text) print(result) #輸出:['a']
當多個字符直接相連時,表示這些字符必須按照順序出現在文本中。比如,正則表達式「abc」匹配所有字符串中連續出現的abc字符組合:
import re text = "abcdeabc" pattern = r"abc" result = re.findall(pattern, text) print(result) #輸出:['abc', 'abc']
2. 字符集
字符集是由一組方括號包圍的字符組成的,表示匹配其中任意一個字符。比如,正則表達式「[abc]」可以匹配所有包含a、b或c的字符組合:
import re text = "abccde" pattern = r"[abc]" result = re.findall(pattern, text) print(result) #輸出:['a', 'b', 'c', 'c']
字符集中還可以使用連字符「-」,表示匹配兩個字符之間的所有字符。比如,正則表達式「[a-c]」等價於「[abc]」:
import re text = "abcccde" pattern = r"[a-c]" result = re.findall(pattern, text) print(result) #輸出:['a', 'b', 'c', 'c', 'c']
3. 量詞
量詞是用於描述字符重複次數的語法。常用的量詞包括「*」(0或多次)、「+」(1或多次)、「?」(0或1次)等。
比如,正則表達式「a*」可以匹配任意多個連續的a字符:
import re text = "aaaabc" pattern = r"a*" result = re.findall(pattern, text) print(result) #輸出:['aaaa', '', 'a']
正則表達式「a+」可以匹配至少一個a字符:
import re text = "aaaabc" pattern = r"a+" result = re.findall(pattern, text) print(result) #輸出:['aaaa']
4. 定位符
定位符是用於描述匹配位置的語法,常用的定位符包括「^」(匹配字符串開始位置)、「\$」(匹配字符串結束位置)、「\b」(匹配單詞的邊界)等。
比如,正則表達式「^a」可以匹配所有以a開頭的字符串:
import re text = "abcde" pattern = r"^a" result = re.findall(pattern, text) print(result) #輸出:['a']
正則表達式「\bthe\b」可以匹配所有獨立的單詞the:
import re text = "the cat is on the mat" pattern = r"\bthe\b" result = re.findall(pattern, text) print(result) #輸出:['the']
三、實戰應用
正則表達式在文本處理中應用非常廣泛,下面介紹幾種實際應用案例:
1. 提取網頁中的鏈接
使用Python正則表達式可以方便地從HTML網頁中提取鏈接:
import re import requests url = "https://www.baidu.com/" response = requests.get(url) text = response.text pattern = r'' links = re.findall(pattern, text) for link in links: print(link)
上述代碼通過requests模塊獲取百度首頁HTML內容,然後使用正則表達式提取其中所有鏈接,最後通過遍歷打印出所有鏈接地址。
2. 過濾敏感詞
使用Python正則表達式可以方便地過濾文本中的敏感詞彙:
import re text = "我愛lenovo電腦!" sensitive_words = ["lenovo", "電腦"] # 構造正則表達式 pattern = r"|".join(sensitive_words) # 正則表達式匹配 filtered_text = re.sub(pattern, "***", text) print(filtered_text) #輸出:我愛***!
上述代碼中,我們首先構造了一個正則表達式,包含了要過濾的敏感詞彙。然後使用re.sub函數將所有匹配到的敏感詞替換成特定的字符串,這裡以「***」為例。
3. 驗證用戶輸入
使用Python正則表達式可以方便地驗證用戶的輸入數據是否符合要求,比如郵箱、手機號碼等等。
import re email = "test@test.com" mobile = "13888888888" # 郵箱正則表達式 email_pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" # 手機號碼正則表達式 mobile_pattern = r"1[3-9]\d{9}" # 郵箱驗證 if re.match(email_pattern, email): print("郵箱格式正確") # 手機號碼驗證 if re.match(mobile_pattern, mobile): print("手機號碼格式正確")
上述代碼中,我們分別使用了對應的正則表達式來驗證郵箱和手機號碼是否符合要求,如果匹配成功,則輸出驗證通過。
四、總結
Python正則表達式是一種非常方便、簡單、高效的文本匹配工具,具有廣泛的應用場景。使用Python正則表達式可以方便地從HTML網頁中提取鏈接、過濾敏感詞彙、驗證用戶輸入數據等等。如果你希望更深入地學習正則表達式,可以查閱Python官方文檔和一些優秀的博客資料。
原創文章,作者:QJKPJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/316451.html