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

python正則表達式標(biāo)準(zhǔn)庫之re庫的詳細介紹

 更新時間:2025年06月30日 10:54:24   作者:wanglaqqqq  
Python的re庫是用于處理正則表達式的標(biāo)準(zhǔn)庫,正則表達式是一種強大而靈活的文本處理工具,能夠幫助你執(zhí)行復(fù)雜的字符串匹配和替換操作,這篇文章主要介紹了python正則表達式標(biāo)準(zhǔn)庫之re庫的詳細介紹,需要的朋友可以參考下

1. 模塊概述

re 是 Python 標(biāo)準(zhǔn)庫中用于正則表達式操作的模塊,提供字符串的復(fù)雜模式匹配、搜索、替換等功能。正則表達式(Regex)通過特定語法規(guī)則描述字符串模式,適用于文本解析、數(shù)據(jù)清洗、輸入驗證等場景。

2. 核心概念

?**(1) 正則表達式語法**

  • ?普通字符:如 a1 直接匹配自身。
  • ?特殊字符
    • .:匹配任意字符(除換行符,除非啟用 re.DOTALL)。
    • ^:匹配字符串開頭。
    • $:匹配字符串結(jié)尾。
    • \d:匹配數(shù)字(等價于 [0-9])。
    • \w:匹配字母、數(shù)字、下劃線(等價于 [a-zA-Z0-9_])。
    • \s:匹配空白符(空格、制表符、換行等)。
    • []:字符集合(如 [a-z] 匹配小寫字母)。
    • |:邏輯或(如 a|b 匹配 a 或 b)。
  • ?量詞
    • *:匹配前一個字符 0 次或多次。
    • +:匹配前一個字符 1 次或多次。
    • ?:匹配前一個字符 0 次或 1 次。
    • {m}:匹配前一個字符恰好 m 次。
    • {m,n}:匹配前一個字符 m 到 n 次。
  • ?分組與捕獲
    • ():定義捕獲組(可通過索引或命名引用)。
    • (?:):非捕獲組(僅分組,不捕獲)。

?**(2) 修飾符(Flags)?**

修飾符描述
re.IGNORECASE (或 re.I)忽略大小寫
re.MULTILINE (或 re.M)多行模式(^ 和 $ 匹配每行的開頭/結(jié)尾)
re.DOTALL (或 re.S). 匹配包括換行符在內(nèi)的所有字符
re.VERBOSE (或 re.X)允許正則表達式換行并添加注釋

?3. 常用函數(shù)與示例

?**(1) 匹配與搜索**

函數(shù)描述示例
re.match(pattern, string)?從字符串開頭匹配模式,成功返回 Match 對象,否則返回 None。re.match(r'\d+', '123abc') → Match 對象(匹配 '123')
re.search(pattern, string)?掃描整個字符串查找第一個匹配,成功返回 Match 對象,否則返回 Nonere.search(r'\d+', 'abc123def') → Match 對象(匹配 '123')
re.findall(pattern, string)返回所有非重疊匹配的列表(直接返回字符串或元組列表)。re.findall(r'\d+', 'a1b22c333') → ['1', '22', '333']
re.finditer(pattern, string)返回所有匹配的迭代器,每個元素是 Match 對象。[m.group() for m in re.finditer(r'\d+', 'a1b22')] → ['1', '22']

 示例代碼

import re

text = "Email: user@example.com, Phone: 123-456-7890"
# 提取郵箱
email = re.search(r'\w+@\w+\.\w+', text).group()  # 'user@example.com'
# 提取所有電話號碼片段
phones = re.findall(r'\d{3}-\d{3}-\d{4}', text)   # ['123-456-7890']

**(2) 替換與分割**

函數(shù)描述示例
re.sub(pattern, repl, string)將匹配模式的部分替換為 repl,返回新字符串。re.sub(r'\d+', '#', 'a1b22c') → 'a#b#c'
re.split(pattern, string)按模式分割字符串,返回列表。re.split(r'\W+', 'Hello, world!') → ['Hello', 'world', '']

 示例代碼

# 替換日期格式(YYYY-MM-DD → DD/MM/YYYY)
date = "2023-10-05"
new_date = re.sub(r'(\d{4})-(\d{2})-(\d{2})', r'\3/\2/\1', date)  # '05/10/2023'

# 分割復(fù)雜文本
text = "apple,,banana;;cherry"
parts = re.split(r'[,;]+', text)  # ['apple', 'banana', 'cherry']

**(3) 預(yù)編譯正則表達式**

使用 re.compile() 預(yù)編譯正則表達式以提高效率(尤其需多次使用同一模式時):

pattern = re.compile(r'\d+')
match = pattern.match('123abc')  # 等效于 re.match(r'\d+', '123abc')

**(4) 匹配對象(Match Object)?**

成功匹配后返回的 Match 對象提供以下方法:

方法描述
group(n)返回第 n 個分組(默認 n=0 表示整個匹配)。
groups()返回所有分組的元組。
start() / end()返回匹配的起始/結(jié)束索引。
span()返回匹配的索引范圍元組 (start, end)。

 示例

text = "Date: 2023-10-05"
match = re.search(r'(\d{4})-(\d{2})-(\d{2})', text)
if match:
    print(match.group(0))   # '2023-10-05'
    print(match.group(1))   # '2023'
    print(match.groups())   # ('2023', '10', '05')
    print(match.span(1))    # (6, 10)

4. 高級技巧

?**(1) 非貪婪匹配**

默認量詞(如 *+)是貪婪的(盡可能多匹配),添加 ? 可改為非貪婪模式:

# 貪婪匹配
re.findall(r'<.*>', '<div>text</div>')  # ['<div>text</div>']
# 非貪婪匹配
re.findall(r'<.*?>', '<div>text</div>') # ['<div>', '</div>']

**(2) 命名分組**

使用 (?P<name>...) 定義命名分組,通過 group('name') 訪問:

text = "ID: 123, Name: Alice"
match = re.search(r'ID: (?P<id>\d+), Name: (?P<name>\w+)', text)
print(match.group('id'))    # '123'
print(match.group('name'))  # 'Alice'

5. 常見問題與注意事項

  • ?轉(zhuǎn)義字符:在正則表達式中使用 \ 需寫成 \\,或使用原始字符串 r'' 簡化:

    python

    re.match(r'\d+', '123')    # 正確(原始字符串)
    re.match('\\d+', '123')    # 正確(常規(guī)字符串需轉(zhuǎn)義)
  • ?性能優(yōu)化

    • 多次使用同一模式時,預(yù)編譯正則表達式(re.compile())。
    • 避免過度復(fù)雜的正則表達式(如深層嵌套量詞)。
  • ?匹配失敗處理:檢查 Match 對象是否為 None 避免異常:

    python

    match = re.search(r'\d+', 'abc')
    if match:
        print(match.group())

6. 應(yīng)用場景

  • ?數(shù)據(jù)提取:從日志、HTML、JSON 中提取特定字段。
  • ?輸入驗證:檢查郵箱、電話、密碼格式是否合法。
  • ?文本清洗:替換敏感詞、標(biāo)準(zhǔn)化日期格式。
  • ?復(fù)雜搜索:查找符合特定模式的字符串片段。

?7. 總結(jié)

  • ?核心功能re 模塊通過正則表達式實現(xiàn)高效的字符串模式操作。
  • ?常用函數(shù)match()search()、findall()sub()、split()。
  • ?匹配對象:利用 group()groups() 提取分組內(nèi)容。
  • ?高級特性:非貪婪匹配、命名分組、預(yù)編譯優(yōu)化。

到此這篇關(guān)于python正則表達式標(biāo)準(zhǔn)庫之re庫的文章就介紹到這了,更多相關(guān)python re庫介紹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python讀取與寫入csv格式文件的示例代碼

    python讀取與寫入csv格式文件的示例代碼

    本篇文章主要介紹了python讀取與寫入csv格式文件的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • python3+selenium實現(xiàn)qq郵箱登陸并發(fā)送郵件功能

    python3+selenium實現(xiàn)qq郵箱登陸并發(fā)送郵件功能

    這篇文章主要為大家詳細介紹了python3+selenium實現(xiàn)qq郵箱登陸,并發(fā)送郵件功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Django路由Path方法的實現(xiàn)

    Django路由Path方法的實現(xiàn)

    本文主要介紹了Django路由Path方法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 一篇文章讓你快速掌握Pandas可視化圖表

    一篇文章讓你快速掌握Pandas可視化圖表

    大家都知道Pandas是基于Python平臺的大數(shù)據(jù)分析與處理的利器,它可以把十分復(fù)雜的可視化過程,變得簡單一點,這篇文章主要給大家介紹了關(guān)于Pandas可視化圖表的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Python探索之URL Dispatcher實例詳解

    Python探索之URL Dispatcher實例詳解

    這篇文章主要介紹了Python探索之URL Dispatcher實例詳解,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • python實現(xiàn)在線翻譯

    python實現(xiàn)在線翻譯

    這篇文章主要介紹了python實現(xiàn)在線翻譯,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Python?TypeError:?‘float‘?object?is?not?subscriptable錯誤解決

    Python?TypeError:?‘float‘?object?is?not?subscriptable錯

    發(fā)現(xiàn)問題寫python的時候出現(xiàn)了這個錯,所以想著給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于Python?TypeError:?‘float‘?object?is?not?subscriptable錯誤的解決辦法,需要的朋友可以參考下
    2022-12-12
  • Django REST框架創(chuàng)建一個簡單的Api實例講解

    Django REST框架創(chuàng)建一個簡單的Api實例講解

    在本篇文章里小編給大家整理的是關(guān)于Django REST框架創(chuàng)建一個簡單的Api實例講解,有需要的朋友們可以學(xué)習(xí)下。
    2019-11-11
  • Pytorch實現(xiàn)常用乘法算子TensorRT的示例代碼

    Pytorch實現(xiàn)常用乘法算子TensorRT的示例代碼

    pytorch 用于訓(xùn)練,TensorRT用于推理是很多AI應(yīng)用開發(fā)的標(biāo)配。大家往往更加熟悉 pytorch 的算子,而不太熟悉TensorRT的算子。本文介紹了Pytorch中常用乘法的TensorRT實現(xiàn),感興趣的可以了解一下
    2022-06-06
  • python中使用pyhook實現(xiàn)鍵盤監(jiān)控的例子

    python中使用pyhook實現(xiàn)鍵盤監(jiān)控的例子

    這篇文章主要介紹了python中使用pyhook實現(xiàn)鍵盤監(jiān)控的例子,包含pyhook的下載地址和手冊地址及一個Windows下的監(jiān)控實例,需要的朋友可以參考下
    2014-07-07

最新評論

台中市| 扎兰屯市| 佛教| 日喀则市| 东兰县| 海门市| 铁岭县| 莱州市| 濮阳县| 新乡县| 东乡族自治县| 启东市| 云安县| 高唐县| 广汉市| 巩义市| 清水河县| 东阳市| 白城市| 吴忠市| 紫金县| 儋州市| 灵璧县| 措勤县| 五家渠市| 从江县| 额尔古纳市| 和林格尔县| 巴马| 百色市| 博罗县| 娱乐| 增城市| 西峡县| 蓬莱市| 札达县| 伊金霍洛旗| 镇康县| 乌拉特中旗| 麻阳| 洪雅县|