Python中re模塊的常用方法總結(jié)
前言
正則表達(dá)式作為計算機科學(xué)的一個概念,通常被用來檢索、替換那些符合某個規(guī)則的文本。正則表達(dá)式是對字符串操作的一種邏輯公式,用事先定義好的規(guī)則字符串對字符串進(jìn)行過濾邏輯處理。
re模塊總結(jié),正則表達(dá)式。在網(wǎng)絡(luò)爬蟲中對于數(shù)據(jù)定位,學(xué)習(xí)regex也很有必要
常用方法
- re.compile()
將指定的正則表達(dá)式模式編譯為正則表達(dá)式對象,可用于匹配和搜索 - re.match()
該方法用于匹配字符串開頭的模式 - re.serach()
該方法用于匹配出現(xiàn)在字符串中任意位置的模式 - re.findall()
該方法返回字符串中制定正則表達(dá)式模式的所有非重疊匹配項 - re.finditer()
對于從左到右掃描字符串中的特定模式,該方法以迭代器的形式返回所有匹配的實例 - re.sub()
用于以替換串來替代字符串中特定的模式,他僅僅替換字符串中最左側(cè)出現(xiàn)的模式
重要標(biāo)識符
正則表達(dá)式可以包含一些可選標(biāo)志修飾符來控制匹配的模式。修飾符被指定為一個可選的標(biāo)志。多個標(biāo)志可以通過按位 OR(|) 它們來指定。如 re.I | re.M 被設(shè)置成 I 和 M 標(biāo)志:
常用表達(dá)式規(guī)則
舉例說明
下面的代碼描述了其中一些方法,并展示了在處理字符串和正則表達(dá)式通常如何使用他們
import re pattern = "python" s1 = "Python is an excellent language" s2 = "I love Python language.I also use Python to build applicants at work!"
re.match(pattern, string, flags=0)
從起始位置開始根據(jù)模型去字符串中匹配指定內(nèi)容,匹配單個
re.match(pattern,s1)
因為大小寫,無法匹配成功
re.I 或 re.IGNORECASE 用于匹配不區(qū)分大小寫的模式
re.match(pattern,s1,re.I)
<re.Match object; span=(0, 6), match='Python'>
re.match(pattern,s1,re.IGNORECASE)
<re.Match object; span=(0, 6), match='Python'>
re.search(pattern, string, flags=0)
根據(jù)模型去字符串中匹配指定內(nèi)容,匹配單個
現(xiàn)在來看下find()和search()方法在正則表達(dá)式是如何工作的
re.search(pattern,s2,re.IGNORECASE)
<re.Match object; span=(7, 13), match='Python'>
re.findall(pattern, string, flags=0)
match and search均用于匹配單值,即:只能匹配字符串中的一個,如果想要匹配到字符串中所有符合條件的元素,則需要使用 findall。
re.findall(pattern,s2,re.IGNORECASE)
['Python', 'Python']
re.sub(pattern, repl, string, count=0, flags=0)
用于文本替換的正則表達(dá)式對于查找和替換字符串中的特定文本標(biāo)識符很有用
用于替換匹配的字符串,比str.replace功能更加強大
re.sub(pattern,"Java",s2,flags=re.I)
'I love Java language.I also use Java to build applicants at work!'
re.subn(pattern,"Java",s2,flags=re.I)
('I love Java language.I also use Java to build applicants at work!', 2)
re.split(pattern, string, maxsplit=0, flags=0)
用匹配到的值做為分割點,把值分割成列表
s1
'Python is an excellent language'
re.split(" ",s1)
['Python', 'is', 'an', 'excellent', 'language']
按數(shù)字分割
print(re.split("\d+","https://blog.csdn.net/qq_45176548"))
‘(?P…)' 分組匹配
s = '230701200104280028' print(re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_date>\d{8})(?P<seq>\d{4})',s)) print(re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_date>\d{8})(?P<seq>\d{4})',s).groups()) res = re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_date>\d{8})(?P<seq>\d{4})',s) print(res.groupdict())
<re.Match object; span=(0, 18), match='230701200104280028'>
('230', '701', '20010428', '0028')
{'province': '230', 'city': '701', 'born_date': '20010428', 'seq': '0028'}
---
總結(jié)
到此這篇關(guān)于Python中re模塊常用方法的文章就介紹到這了,更多相關(guān)Python中re模塊方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?Math數(shù)學(xué)函數(shù)常數(shù)冪和對數(shù)基礎(chǔ)應(yīng)用實例
Python中的math模塊是數(shù)學(xué)運算的重要工具,提供了豐富的數(shù)學(xué)函數(shù)和常數(shù),本文將深入探討math模塊的功能和用法,使您能夠更好地利用Python進(jìn)行數(shù)學(xué)運算2023-12-12淺談pyhton學(xué)習(xí)中出現(xiàn)的各種問題(新手必看)
下面小編就為大家?guī)硪黄獪\談pyhton學(xué)習(xí)中出現(xiàn)的各種問題(新手必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05python?time模塊計算時間之間的差距(練習(xí)題)
這篇文章主要介紹了python?time模塊計算時間之間的差距,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊列解決小貓釣魚問題
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之使用隊列解決小貓釣魚問題,結(jié)合實例形式分析了Python使用隊列實現(xiàn)小貓釣魚游戲的算法操作技巧,代碼中備有較為詳盡的注釋便于讀者理解,需要的朋友可以參考下2017-12-12python的django寫頁面上傳文件及遇到的問題小結(jié)
這篇文章主要介紹了python的django寫頁面上傳文件以及遇到的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08Django執(zhí)行python?manage.py?makemigrations報錯的解決方案分享
相信用過很多Django makemigrations的人都會遇到過makemigrations時會發(fā)生報錯,下面這篇文章主要給大家介紹了關(guān)于Django執(zhí)行python?manage.py?makemigrations報錯的解決方案,需要的朋友可以參考下2022-09-09