一篇文章詳細講解正則表達式庫和第三方庫
一、正則表達式庫
正則表達式是一種表達式語句,用于對字符串類型數(shù)據(jù)進行操作,包含從字符串中篩選出滿足表達式條件的信息、將字符串中的內(nèi)容進行替換等功能,在python語言中用re庫實現(xiàn)正則表達式,用import將re庫導入代碼程序中。
1.匹配字符串
match()函數(shù)
在re模塊中,re.match(參數(shù)1, 參數(shù)2)會嘗試從字符串的第一個字符開始匹配指定模式,只有當模式在字符串起始位置完全匹配時才返回參數(shù)1的內(nèi)容,否則返回None。
使用形式:
match(參數(shù)1,參數(shù)2)
示例:
import re # 從起始位置匹配成功? print(re.match(r'abc', 'abcdef')) #輸出為 <re.Match object; span=(0, 3), match='abc'>? # 非起始位置有匹配但返回None? print(re.match(r'cde', 'abcdef')) #輸出為 None
search()函數(shù)
search()函數(shù)的功能是在整個字符串中查找第一個匹配項。search()會從字符串的起始位置開始對比,直到找到第一個符合的子串,然后返回包含匹配成功的信息;如果遍歷完整個字符串仍未找到匹配,則返回None。
使用形式:
search(參數(shù)1,參數(shù)2)
示例:
import re
# 查找第一個數(shù)字序列?
text = '用戶ID: 12345, 訂單號: 67890'?
match = re.search(r'\d+', text)?
if match:?
print(f"找到匹配: {match.group()}") # 找到匹配: 12345?
print(f"匹配位置: {match.span()}") # 匹配位置: (6, 11)findall()函數(shù)
使用形式:
findall(參數(shù)1,參數(shù)2)
功能是從參數(shù)2(字符串類型數(shù)據(jù))中查找滿足參數(shù)1(正則表達式)的內(nèi)容,如果匹配了多個參數(shù)1,則返回匹配成功的全部信息。
示例:
import re
text = '用戶A: 13800138000, 用戶B: 13900139000, 用戶C: 13700137000'
# 提取所有手機號
phones = re.findall(r'1[3-9]\d{9}', text)
print(phones) # ['13800138000', '13900139000', '13700137000']2.正則表達式
正則表達式 (Regular Expression) 是一種強大的文本處理工具,它通過定義特定模式來匹配、查找和替換文本。在 Python 中,無論是標準庫re還是第三方庫regex,都提供了豐富的 API 支持,使開發(fā)者能夠高效處理各種復雜的文本場景。本文將從基礎(chǔ)語法到高級應用,系統(tǒng)介紹 Python 中正則表達式的核心概念、使用技巧及最佳實踐。
表示字符范圍:
[abc] # 匹配a、b或c中的任意一個字符 [^abc] # 匹配除a、b、c之外的任意字符 [a-z] # 匹配任意小寫字母 [A-Z] # 匹配任意大寫字母 [0-9] # 匹配任意數(shù)字 [a-zA-Z0-9] # 匹配任意字母或數(shù)字
表示字符出現(xiàn)次數(shù):
^ # 匹配字符串的起始位置
$ # 匹配字符串的結(jié)束位置
* # 匹配前面的子表達式零次或多次
+ # 匹配前面的子表達式一次或多次
? # 匹配前面的子表達式零次或一次
{n} # 精確匹配n次
{n,} # 至少匹配n次
{n,m} # 匹配至少n次且最多m次表示同一類字符:
\d # 等價于[0-9],匹配任意數(shù)字
\D # 等價于[^0-9],匹配任意非數(shù)字字符
\s # 等價于[\t\n\r\f\v],匹配任意空白字符(空格、制表符、換行符等)
\S # 等價于[^\t\n\r\f\v],匹配任意非空白字符
\w # 等價于[a-zA-Z0-9_],匹配任意字母、數(shù)字或下劃線
\W # 等價于[^a-zA-Z0-9_],匹配任意非字母、數(shù)字或下劃線字符
a* # 匹配零個或多個a(如:'', 'a', 'aa', 'aaa'等)
a+ # 匹配一個或多個a(如:'a', 'aa', 'aaa'等)
a? # 匹配零個或一個a(如:'', 'a')
a{3} # 精確匹配3個a(如:'aaa')
a{3,} # 匹配至少3個a(如:'aaa', 'aaaa', 'aaaaa'等)
a{3,5} # 匹配3到5個a(如:'aaa', 'aaaa', 'aaaaa')3.貪婪模式和非貪婪模式
默認情況下,量詞是貪婪的,即盡可能多地匹配字符。通過在量詞后添加?,可以將其變?yōu)榉秦澙纺J?,即盡可能少地匹配字符:
示例:
text = '<div>內(nèi)容</div>' # 貪婪匹配(默認) re.findall(r'<.*>', text) # 結(jié)果: ['<div>內(nèi)容</div>'] # 非貪婪匹配 re.findall(r'<.*?>', text) # 結(jié)果: ['<div>', '</div>']
4.或和組
在 Python 正則表達式中,"或"和 "組"是構(gòu)建復雜模式的兩大核心機制。"或" 允許在模式中定義多個可選分支,而 "組" 則用于將多個字符作為一個整體處理,并支持捕獲匹配內(nèi)容。
"或" 操作符(|)的用法與特性
在正則表達式中,豎線|用于表示 "或" 關(guān)系,允許匹配多個模式中的任意一個。示例:
import re pattern = re.compile(r'apple|banana') # 匹配apple或banana text = 'I like apple and banana' print(pattern.findall(text)) # ['apple', 'banana']
"或" 操作符的優(yōu)先級較低,通常需要用括號進行分組以明確匹配范圍,多個分支按從左到右的順序進行匹配,一旦找到匹配項就停止搜索。因此,較長或更具體的模式應放在前面,在字符類[]內(nèi)部,|表示普通字符而非 "或" 操作符。
"組"的類型與應用
使用()定義的捕獲組會保存匹配的子串,可通過索引或名稱引用
示例:
# 數(shù)字索引引用
pattern = re.compile(r'(\d{4})-(\d{2})-(\d{2})')
text = '2023-10-05'
match = pattern.match(text)
print(match.group(1)) # '2023'(年)
# 命名組引用
pattern = re.compile(r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})')
print(match.group('month')) # '10'多層嵌套時,索引按左括號出現(xiàn)的順序分配,在模式內(nèi)部使用\1、\2等語法引用前面的捕獲組,使用(?:)定義的非捕獲組僅用于分組,不保存匹配結(jié)果。
5.sub()和compile()方法
sub()用于替換字符串中的匹配項,示例:
text = 'Hello 123, World 456'
pattern = re.compile(r'\d+')
print(pattern.sub('NUM', text)) # 'Hello NUM, World NUM'compile()是re模塊中的核心函數(shù),用于創(chuàng)建預編譯的模式對象:
import re
# 編譯正則表達式
pattern = re.compile(r'正則表達式模式')
# 使用模式對象進行匹配
match = pattern.search('待匹配的文本')二、第三方庫
1.第三方庫的介紹
在 Python 的技術(shù)生態(tài)中,第三方庫是連接基礎(chǔ)語法與實際應用的橋梁。這些由全球開發(fā)者社區(qū)貢獻的代碼集合,將 Python 的靈活性與擴展性發(fā)揮到極致,使其能夠輕松應對從簡單腳本到復雜系統(tǒng)的各類開發(fā)需求。本文將從定義本質(zhì)、分類體系、技術(shù)價值和選擇框架四個維度,全面剖析 Python 第三方庫的核心特征。
數(shù)據(jù)科學與分析領(lǐng)域:從采集到可視化的全流程工具
人工智能與機器學習領(lǐng)域:從模型訓練到部署的全鏈路支持
自動化與運維領(lǐng)域:從腳本到系統(tǒng)的效率工具
科學計算與工程領(lǐng)域:從仿真到可視化的專業(yè)工具
游戲開發(fā)與創(chuàng)意編程領(lǐng)域:從 2D 到 3D 的開發(fā)工具
2.不同領(lǐng)域的第三方庫
Python 第三方庫的生態(tài)之所以強大,在于其覆蓋了幾乎所有技術(shù)領(lǐng)域的解決方案。從 Web 開發(fā)到人工智能,從數(shù)據(jù)分析到嵌入式開發(fā),每個領(lǐng)域都形成了各具特色的庫集群。本文將深入剖析六大主流領(lǐng)域的核心庫,解析其技術(shù)特點、適用場景及選型策略,為開發(fā)者提供全面的工具選擇參考。
Web 開發(fā)領(lǐng)域:從后端到前端的全棧工具鏈?
3.第三方庫的安裝
常見的有2種:
通過win+r輸入cmd打開命令指示符后寫入以下形式:
pip install 庫名
但這樣通常下載很慢,因為這里用的是外網(wǎng),可以通過搜索中國網(wǎng)站下載庫會快很多。
例如:pip install 庫名稱 -i https://pypi.tuna.tsinghua.edu.cn/simple
再一種就是通過pycharm的解釋器下載第三方庫,與上述方法差不多。

搜索所需要的第三方庫,可以在選項中輸入中國網(wǎng)站加快下載速度。
4.安裝報錯的解決方法
1.操作系統(tǒng)缺失支撐軟件
解決方法:通過error錯誤提示下載缺失的支撐軟件。
2.計算機的操作系統(tǒng)版本與第三方庫的版本之間存在不兼容的情況。
解決方法:使用命令:
pip install 庫名 == 版本號
3.pip工具版本過低。
解決方法:通過命令:
python -m pip install --upgrade pip
更新當前pip工具。
5.pip工具的常用命令
pip uninstall 庫名 #卸載庫 pip list #列出所有已安裝的庫 pip show 庫名 #查看特定庫的詳細信息 pip download 庫名 #下載第三方庫安裝包但不安裝 -h #獲取pip使用幫助
6.Pyinstaller庫
1.Pyinstaller庫的介紹和安裝
PyInstaller 是一個開源的 Python 庫,能夠?qū)?Python 腳本打包成獨立的可執(zhí)行文件(.exe、.app 等),無需目標機器安裝 Python 解釋器或相關(guān)依賴庫。其工作原理是分析腳本的依賴關(guān)系,將 Python 解釋器、腳本本身及所有依賴文件打包到一個文件夾或單個可執(zhí)行文件中,實現(xiàn) "一次打包,到處運行" 的效果。
打開命令提示符(CMD)或 PowerShell?執(zhí)行安裝命令:
# 使用pip安裝最新版本 pip install pyinstaller # 如需指定版本(例如5.13.2) pip install pyinstaller==5.13.2
2.使用
PyInstaller 的命令結(jié)構(gòu)簡潔明了,核心語法為:
pyinstaller 代碼文件路徑+代碼文件名
3.其他Pyinstaller命令
-F:
使打包后只產(chǎn)生一個list文件夾,且文件夾中只存在一個打包后的可執(zhí)行文件。
pyinstaller -F 代碼文件路徑+代碼文件名
-i:
用于指定可執(zhí)行文件圖標的實用參數(shù),在程序窗口中添加圖標。
pyinstaller -i 代碼文件路徑+代碼文件名
總結(jié)
到此這篇關(guān)于正則表達式庫和第三方庫的文章就介紹到這了,更多相關(guān)正則表達式庫和第三方庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP preg match正則表達式函數(shù)的操作實例
在php中preg_match()函數(shù)是用來執(zhí)行正則表達式的一個常用的函數(shù)。本文給大家介紹PHP preg match正則表達式函數(shù)的操作實例,需要的朋友參考下2016-04-04

