最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python正則表達式入門從匹配手機號到提取文本內容的實戰(zhàn)教學

 更新時間:2026年06月26日 09:15:03   作者:我材不敲代碼  
本文詳細講解Python正則表達式應用,從基礎概念、核心方法(search、findall、sub、split、match)到實戰(zhàn)案例(提取手機號、郵箱、HTML標簽、批量替換數字),覆蓋文本處理全場景,感興趣的小伙伴可以了解下

一、前言:為什么要學正則表達式?

在日常Python開發(fā)、數據處理、爬蟲工作中,我們經常會遇到這些高頻需求:

  • 從雜亂文本中精準提取手機號、郵箱、身份證
  • 批量替換文本中的數字、特殊符號、敏感詞
  • 按照多種不規(guī)則分隔符拆分字符串
  • 校驗用戶輸入的賬號、密碼、網址格式是否合法
  • 提取簡單HTML、文本標簽中的核心內容

普通字符串方法只能處理規(guī)則固定的簡單場景,而正則表達式可以通過一套通用規(guī)則,適配所有復雜文本處理場景,是Python文本處理的必備核心技能。

Python 內置 re 模塊,無需額外安裝,開箱即用,本文從零帶你吃透正則基礎,手把手實現實戰(zhàn)案例。

二、環(huán)境準備:導入re模塊

Python 正則操作全部依賴內置 re 模塊,使用前只需導入即可:

import re

re 是 regular expression 的縮寫,核心作用:自定義字符規(guī)則,實現字符串的匹配、查找、替換、分割

三、五大核心方法實戰(zhàn)(零基礎必掌握)

3.1 re.search():查找第一個匹配項

作用:掃描整個字符串,返回第一個匹配成功的結果,匹配失敗返回 None。

核心注意:必須判斷結果非空后,再調用 .group() 獲取匹配內容,避免報錯。

案例1:文本中提取手機號

import re

text = "我的手機號是 13812345678,郵箱是 test@example.com"
# 手機號正則:1開頭,第二位3-9,后接9位數字
phone = re.search(r"1[3-9]\d{9}", text)

if phone:
    print(f"找到手機號:{phone.group()}")
# 輸出:找到手機號:13812345678

正則規(guī)則解析

  • 1:手機號固定以1開頭
  • [3-9]:第二位數字范圍3-9(符合國內手機號規(guī)則)
  • \d{9}:匹配9位數字(剩余手機號位數)

案例2:文本中提取郵箱

import re

text = "我的手機號是 13812345678,郵箱是 test@example.com"
email = re.search(r"\w+@\w+\.\w+", text)

if email:
    print(f"找到郵箱:{email.group()}")
# 輸出:找到郵箱:test@example.com

郵箱正則規(guī)則解析

  • \w+:匹配1個及以上字母、數字、下劃線(郵箱用戶名)
  • @:精準匹配郵箱固定符號
  • \w+:匹配域名主體
  • \.:轉義匹配點號(正則中.是任意字符,必須轉義才是普通點)
  • \w+:匹配郵箱后綴(com、cn、net等)

3.2 re.findall():查找所有匹配項(批量提?。?/h3>

作用:查找字符串中所有匹配內容,以列表形式返回,無匹配則返回空列表,是批量提取文本的高頻方法。

案例:批量提取文本中所有數字價格

import re

text = "商品價格:100元、200元、350元、89.9元"
# \d+ 匹配連續(xù)數字
prices = re.findall(r"\d+", text)
print(prices)
# 輸出:['100', '200', '350', '89', '9']

適合場景:批量提取數字、關鍵詞、特殊格式文本,比循環(huán)匹配效率高10倍以上。

3.3 re.sub():正則替換字符串

作用:根據正則規(guī)則匹配內容,批量替換為指定字符,完美解決普通replace無法處理的模糊替換場景。

語法re.sub(pattern, replacement, string)

  • pattern:正則匹配規(guī)則
  • replacement:替換后的內容
  • string:需要處理的原字符串

案例:批量隱藏日期數字

import re

text = "今天是2026年02月19日,訂單編號20260219001"
# 所有連續(xù)數字替換為X
result = re.sub(r"\d+", "X", text)
print(result)
# 輸出:今天是X年X月X日,訂單編號X

3.4 re.split():多分隔符拆分字符串

痛點:Python原生 split() 僅支持單一分隔符,無法處理不規(guī)則分隔的文本。

解決方案re.split() 支持多分隔符、不規(guī)則空白拆分。

案例:拆分含分號、逗號、空格的文本

import re

text = "張三;李四,王五 趙六 錢七;孫八"
# 匹配分號、逗號、空白字符,多個分隔符合并拆分
names = re.split(r"[;,\s]+", text)
print(names)
# 輸出:['張三', '李四', '王五', '趙六', '錢七', '孫八']

規(guī)則解析:[;,\s]+

  • []:字符集合,匹配集合內任意一個字符
  • ; , \s:分別匹配分號、逗號、空白字符(空格、換行、制表符)
  • +:匹配1個及以上連續(xù)字符,避免拆分空值

3.5 re.match():精準校驗文本格式

作用從字符串開頭嚴格匹配,適合做格式校驗(手機號、郵箱、賬號),必須整串符合規(guī)則才會匹配成功。

核心搭配^(開頭)+ $(結尾)實現全局精準校驗。

案例1:完整手機號格式校驗

import re

# 全局手機號校驗規(guī)則
phone_pattern = r"^1[3-9]\d{9}$"
print(re.match(phone_pattern, "13812345678"))  # 匹配成功
print(re.match(phone_pattern, "138123456"))    # 位數不足,匹配失敗
print(re.match(phone_pattern, "23812345678"))  # 開頭錯誤,匹配失敗

案例2:通用郵箱格式校驗

import re

# 適配絕大多數常規(guī)郵箱格式
email_pattern = r"^[\w.+-]+@[\w-]+\.[\w.]+$"
print(re.match(email_pattern, "test@example.com"))  # 合法
print(re.match(email_pattern, "test123@qq.com"))    # 合法
print(re.match(email_pattern, "test.com"))          # 非法

提示:業(yè)務簡單格式校驗可使用該正則,正式生產郵件校驗需結合發(fā)送驗證。

四、進階實戰(zhàn):提取HTML標簽內容

利用正則分組+非貪婪匹配,可快速提取簡單HTML標簽文本,適合輕量文本解析。

import re

html = "<h1>Python正則入門教程</h1><p>零基礎快速掌握正則用法</p>"
# 分組匹配標簽內容,? 開啟非貪婪匹配
contents = re.findall(r"<\w+>(.*?)</\w+>", html)
print(contents)
# 輸出:['Python正則入門教程', '零基礎快速掌握正則用法']

核心規(guī)則解析

  • <\w+>:匹配任意HTML開始標簽
  • (.*?):分組+非貪婪匹配,精準提取標簽內文本(核心!避免多標簽串匹配)
  • </\w+>:匹配任意HTML結束標簽

重要提醒:正則僅適合簡單靜態(tài)HTML片段,復雜爬蟲解析請使用 BeautifulSoup、lxml 專業(yè)庫。

五、正則基礎符號速查表(收藏必備)

正則符號詳細含義
.匹配任意單個字符(換行符除外)
\d匹配任意數字,等價于 [0-9]
\D匹配任意非數字字符
\w匹配字母、數字、下劃線
\W匹配非字母、非數字、非下劃線
\s匹配空白字符(空格、換行、制表符)
\S匹配非空白字符
^匹配字符串開頭
$匹配字符串結尾
*匹配前面字符 0次或多次
+匹配前面字符 1次或多次
?匹配前面字符 0次或1次,開啟非貪婪匹配
{n}精準匹配前面字符 n 次
{n,m}匹配前面字符 n~m 次
[]字符集合,匹配集合內任意單個字符
()分組匹配,精準提取分組內內容

六、五大核心方法選型指南

新手不用死記硬背,根據需求直接選:

方法適用場景
re.search()查找第一個匹配內容
re.match()字符串整體格式校驗(從頭匹配)
re.findall()批量查找所有匹配內容(最常用)
re.sub()批量替換文本內容
re.split()多分隔符、不規(guī)則文本拆分

七、新手必看:為什么正則前要加 r?

大家會發(fā)現所有案例中,正則表達式都寫為 r"\d+" 原始字符串格式。

核心作用r 代表原生字符串,屏蔽Python轉義機制,避免正則符號雙重轉義報錯。

如果不添加 r,復雜正則中的\d\s 容易被Python解析為轉義字符,導致正則規(guī)則失效。

編碼好習慣:所有Python正則表達式,統(tǒng)一使用 r"正則規(guī)則" 格式!

八、全文總結

本文從零入門Python正則表達式,覆蓋開發(fā)90%基礎場景,核心知識點復盤:

  • 掌握 search/findall/sub/split/match 五大核心方法,適配查找、替換、拆分、校驗全場景
  • 熟記 \d、\w、\s、+、*、?、^、$ 基礎符號,可完成絕大多數文本匹配
  • 手機號、郵箱、HTML內容提取為通用實戰(zhàn)模板,可直接復用
  • 正則優(yōu)先使用 r"" 原始字符串,規(guī)避轉義問題
  • 簡單文本解析用正則,復雜網頁解析用專業(yè)爬蟲庫

正則看似是符號密碼,實則規(guī)則固定,熟練后可以極大提升文本處理效率,是Python數據分析、爬蟲、自動化開發(fā)的必備技能!

到此這篇關于Python正則表達式入門從匹配手機號到提取文本內容的實戰(zhàn)教學的文章就介紹到這了,更多相關Python正則表達式匹配手機號內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

东平县| 丁青县| 聊城市| 科尔| 柯坪县| 天全县| 米林县| 双牌县| 汤原县| 景宁| 双桥区| 孙吴县| 闽侯县| 定边县| 凤阳县| 长宁县| 深州市| 周口市| 凤山市| 扶余县| 乌审旗| 花莲市| 江川县| 郎溪县| 荥经县| 夏河县| 综艺| 福建省| 乡宁县| 静海县| 连江县| 五原县| 叶城县| 鄄城县| 南城县| 濮阳县| 垫江县| 巨鹿县| 马边| 抚顺县| 四子王旗|