一文秒懂python正則表達式常用函數_正則表達式

來源:腳本之家  責任編輯:小易  

匹配兩種情況的Python正則表達式 top|123我給你一個Python3語言的例子,你看看吧.import res="topofhill1234567toptower123regex="top|123print(re.findall(regex,s))www.13333515.buzz防采集請勿采集本網。

導讀: 正則表達式是處理字符串類型的"核武器",不僅速度快,而且功能強大。本文不過多展開正則表達式相關語法,僅簡要 介紹 python中正則表達式常用函數及其使用方 法,以作快速查詢瀏覽。

f*是用來匹配多個f,默認是匹配盡可能多的,但是后接?就變成匹配盡可能少的。所以第一個啥都沒匹配。第二個可以匹配到。

 

01 Re概覽

px=r'<tr>.+?(.+?href=\"<%=.+?%>.*?\\?filename=(\"(.+?.+?\\)%>\">.+?.+?(.+?.+?' rex=re.compile(px,re.S|re.M) mth=rex.findall(txt) for l in mth: print l[0].decode('utf-8'),l[1].

Re模塊是python的內置模塊,提供了正則表達式在python中的所有用法,默認安裝位置在python根目錄下的Lib文件夾(如 ..\Python\Python37\Lib)。主要提供了3大類字符串操作方法: 字符查找/匹配 字符替換 字符分割

[A-Za-z]\\w+:由開頭的1個大寫或者小寫的字母加上至少1個 字符來匹配 比如 Aaa,Aa 4xZ匹配不到,xZ4可以匹配。

由于是面向字符串類型的模塊,就不得不提到字符串編碼類型。re模塊中,模式串和搜索串既可以是 Unicode 字符串 (常用str類型) ,也可以是8位字節串 (bytes,2位16進制數字,例如\xe5) , 但要求二者必須是同類型字符串。

02 字符串查找/匹配

這個問題的確比較糾結首先明確一點 表示匹配前面的表達式0個或一次,例子:go?匹配go為0或者1次 呵呵 就是冒號的意思,所以你懂的,沒匹配到 寫那么多,如果不明白,可以再問我哈 萬請采納

預編譯:compile

a='<gml:bbbb>-69</gml:aaaaa>' r=re.findall('([\\s\\S]*?',a) print(r)

在介紹查找和匹配函數前,首先需要知道re的compile函數,該函數可以將一個模式串編譯成正則表達式類型,以便后續快速匹配和復用

import repattern = re.compile(r'[a-z]{2,5}')type(pattern) #re.Pattern

此例創建了一個正則表達式式對象 (re.pattern) ,命名為pattern,用于匹配2-5位小寫字母的模式串。后續在使用其他正則表達式函數時,即可使用pattern進行方法調用。

匹配:match

match函數用于從文本串的起始位置開始匹配,若匹配成功,則返回相應的匹配對象,此時可調用group()方法返回匹配結果,也可用span()方法返回匹配起止下標區間;否則返回None

import repattern = re.compile(r'[a-z]{2,5}')text1 = 'this is a re test'res = pattern.match(text1)print(res) #<re.Match object; span=(0, 4), match='this'>if res: print(res.group()) #this print(res.span()) #(0, 4)text2 = '是的, this is a re test'print(pattern.match(text2))#None

match函數還有一個變形函數fullmatch,當且僅當模式串與文本串剛好全部匹配時,返回一個匹配對象,否則返回None

搜索:search

match只提供了從文本串起始位置匹配的結果,如果想從任意位置匹配,則可調用search方法,與match方法類似,當任意位置匹配成功,則立即返回一個匹配對象,也可調用span()方法獲取起止區間、調用group方法獲得匹配文本串

import repattern = re.compile(r'\s[a-z]{2}')text1 = 'this is a re test'res = pattern.search(text1)print(res) #<re.Match object; span=(4, 7), match=' is'>if res: print(res.group()) #is print(res.span()) #(4, 7)pattern2 = re.compile(r'\s[a-z]{5}')text2 = '是的,this is a re test'print(pattern2.search(text2))#None

match和search均用于匹配單個結果,唯一區別在于前者是從起始位置開始匹配,而后者從任意位置匹配,匹配成功則返回一個match對象。

全搜索:findall/finditer

幾乎是最常用的正則表達式函數,用于尋找所有匹配的結果,例如在爬蟲信息提取中,可非常方便地提取所有匹配字段

import repattern = re.compile(r'\s[a-z]{2,5}')text1 = 'this is a re test'res = pattern.findall(text1)print(res) #[' is', ' re', ' test']

findall返回的是一個列表對象類型,當無匹配對象時,返回一個空列表。為了避免因同時返回大量匹配結果占用過多內存,可以調用finditer函數返回一個迭代器類型,其中每個迭代元素是一個match對象,可繼續調用group和span方法獲取相應結果

import repattern = re.compile(r'\s[a-z]{2,5}')text1 = 'this is a re test'res = pattern.finditer(text1)for r in res: print(r.group())""" is re test"""

當匹配模式串較為簡單或者僅需單詞調用時,上述所有方法也可直接調用re類函數,而無需事先編譯。此時各方法的第一個參數為模式串。

import repattern = re.compile(r'\d{2,5}')text = 'this is re test're.findall('[a-z]+', text) #['this', 'is', 're', 'test']

03 字符串替換/分割

替換:sub/subn

當需要對文本串進行條件替換時,可調用re.sub實現 (當然也可先編譯后再用調用實例方法) ,相應參數分別為模式串、替換格式、文本串,還可以通過增加缺省參數限定替換次數和匹配模式。通過在模式串進行分組,可實現字符串的格式化替換(類似字符串的format方法),以實現特定任務。

import retext = 'today is 2020-03-05'print(re.sub('-', '', text)) #'today is 20200305'print(re.sub('-', '', text, 1)) #'today is 202003-05'print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', text)) #'today is 03/05/2020'

re.sub的一個變形方法是re.subn,區別是返回一個2元素的元組,其中第一個元素為替換結果,第二個為替換次數

import retext = 'today is 2020-03-05'print(re.subn('-', '', text)) #('today is 20200305', 2)

分割:split

還可以調用正則表達式實現字符串的特定分割,相當于.split()方法的一個加強版,實現特定模式的分割,返回一個切割后的結果列表

import retext = 'today is a re test, what do you mind?'print(re.split(',', text)) #['today is a re test', ' what do you mind?']

04 總結

python中的re模塊提供了正則表達式的常用方法,每種方法都包括類方法調用(如re.match)或模式串的實例調用(pattern.match)2種形式 常用的匹配函數:match/fullmatch 常用的搜索函數:search/findall/finditer 常用的替換函數:sub/subn 常用的切割函數:split 還有其他很多方法,但不是很常用,具體可參考官方文檔 另外,python還有第三方正則表達式庫regex可供選擇

到此這篇關于一文秒懂python正則表達式常用函數的文章就介紹到這了,更多相關python 正則表達式常用函數內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

try:time.strptime("23:11:11內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • python正則表達式常用函數總結
  • python pandas常用函數詳解
  • python3的urllib.parse常用函數小結(urlencode,quote,quote_plus,unquote,unquote_plus等)
  • python學習筆記之常用函數及說明
  • python time模塊詳解(常用函數實例講解,非常好)
  • sqlparser 一個利用正則表達式解析單句sql的類
  • editplus中的正則表達式實戰(5)
  • email正則表達式日常整理大全
  • java正則表達式學習教程
  • 通過正則表達式刪除空行的方法
  • 一個獲取form表單值正則表達式
  • 正則表達式高級技巧及實例詳解 笨活兒
  • 比較實用的正則表達式學習筆記
  • 正則表達式教程之匹配一組字符詳解
  • 正則 捕獲組(capture group)
  • python時分秒的正則表達式
  • python 正則表達式
  • python 正則表達式 大家進來看看.
  • Python 正則表達式
  • python正則表達式
  • python正則表達式
  • python 正則表達式
  • python 正則表達式
  • python 正則表達式
  • Python正則表達式
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁正則表達式python正則表達式常用函數總結python pandas常用函數詳解python3的urllib.parse常用函數小結(urlencode,quote,quote_plus,unquote,unquote_plus等)python學習筆記之常用函數及說明python time模塊詳解(常用函數實例講解,非常好)sqlparser 一個利用正則表達式解析單句sql的類editplus中的正則表達式實戰(5)java正則表達式學習教程通過正則表達式刪除空行的方法一個獲取form表單值正則表達式正則表達式高級技巧及實例詳解 笨活兒比較實用的正則表達式學習筆記正則表達式教程之匹配一組字符詳解正則 捕獲組(capture group)java 正則表達式詳解比較正宗的驗證郵箱的正則表達式正則表達式匹配任意字符(包括換最新手機號碼、電話號碼正則表達javascript 手機號碼正則表達式驗js利用正則配合replace替換指定字正則表達式匹配不包含某些字符串正則中需要轉義的特殊字符小結js正則函數match、exec、test、s最全的常用正則表達式大全——包正則表達式的使用 asp[asp]中的正則表達式運用代碼匹配移動/聯通/電信手機號碼正則表達式小史上最全的php正則表達式(手機號需要加上正則表達式不包含align該怎么寫python 實用技巧之正則表達式查找和替換文利用正則表達對ip進行排序的實現代碼正則表達式中使用變量賦值自動識別html的標記 替換連接javascript校驗密碼復雜度的正則表達式
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果