第六節 Python正則表示式
正則表示式(初級)
正則表示式定義
正則表示式用於字串的匹配工作
正則表示式的步驟
1. 建立正則表示式
2. 通過正則表示式匹配字串
#正則表示式
#正則表示式用作模式匹配
# 模式pattern 匹配match
import re
pattern = r"python"
string = r"pythonsfdsadpythonsdfpythonsadfpython"
prog = re.compile(pattern)
result = prog.match(string)
print(result)
#下面的程式碼和上面等價,使用compile更有效率。
result2 = re.match(pattern, string)
print(result2)
'''
pattern.match(string)只能從開頭匹配,如果開始沒匹配上,則不存在
返回值是match型別
'''
#prog.search(string)從開頭掃描匹配,只返回第一個匹配的值,返回值是match型別
str3 = r"sdfsdpythonsdfspython"
result3 = prog.search(str3)
print(result3)
#findall返回一個列表
result4 = prog.findall(str3)
print(result4)
#如果字串和正則表示式完全匹配,則返回match型別,如果不是完全匹配,則返回None
str5 = r"python"
result5 = prog.fullmatch(str5)
print(result5)
#re.split(pattern, string, maxsplit=0, flags=0) 可以進行字串分割,返回值位列表
str6 = r"python,sfdsad,pythons,dfp,yth,onsa,dfpyt,hon"
pattern6 = re.compile(r",")
result6 = pattern6.split(str6)
print(result6)
正則表示式(中級)
子表示式
import re
#子表示式,就是對字串分組,例如匹配ip地址,192.168.10.1 這個很明顯可以進行分組
string = r"192.168.10.11"
pattern = r"(\d{1,3}\.){3}\d{1,3}"
prog =re.compile(pattern)
# \d表示數字,+{1,3}表示重複前面的\d最少1次,最多3次。
result = prog.search(string)
print(result)
指定前後字串
#指定前後字串
string1 = r"<body><h1>hello world</h1></body>"
pattern1 = r"(?<=<h1>).+(?=</h1>)"
#?<=xx指定字首xx,?=aa制定字尾aa
prog1 = re.compile(pattern1)
result = prog1.search(string1)
print(result)
回溯引用
#回溯引用
string3 = r"<body><h1>hello world</h1><h2>你好</h2><h1>呵呵</h3></body>"
pattern3 = r"(?<=<h[1,6]>).+(?=</h[1,6]>"
#搜尋<h1>-<h6>之間的內容,但是如果出現<h1></h3>這種奇葩,那就不行了,需要如下
pattern4 = r"(?<=<h[1,6]>).+(?=</h\1>" #\1表示呼叫表示式1中的內容,即,隨著表示式1的變化而變化
prog = re.compile(pattern4)
result = prog.search(string3)
print(result)
正則表示式(高階)
分組
#group分組,
string4 = r"123abc345"
#分組正則表示式,用()分組
pattern = r"(\d{3})(\w{3})(\d{3})"
prog = re.compile(pattern)
result = prog.search(string4)
print(result.group()) #獲取所有
print(result.group(1))
print(result.group(2))
print(result.group(3))
正則表示式
模式 | – 描述– |
---|---|
^ | 匹配字串的開頭 |
$ | 匹配字串的末尾。 |
. | 匹配任意字元,除了換行符,當re.DOTALL標記被指定時,則可以匹配包括換行符的任意字元。 |
[…] | 用來表示一組字元,單獨列出:[amk] 匹配 ‘a’,’m’或’k’ |
[^…] | 不在[]中的字元:[^abc] 匹配除了a,b,c之外的字元。 |
re* | 匹配0個或多個的表示式。 |
re+ | 匹配1個或多個的表示式。 |
re? | 匹配0個或1個由前面的正則表示式定義的片段,非貪婪方式 |
re{ n} | 匹配n個前面表示式。。例如,”o{2}”不能匹配”Bob”中的”o”,但是能匹配”food”中的兩個o。 |
re{ n,} | 精確匹配n個前面表示式。例如,”o{2,}”不能匹配”Bob”中的”o”,但能匹配”foooood”中的所有o。”o{1,}”等價於”o+”。”o{0,}”則等價於”o*”。 |
re{ n, m} | 匹配 n 到 m 次由前面的正則表示式定義的片段,貪婪方式 |
a| b | 匹配a或b |
(re) | 匹配括號內的表示式,也表示一個組 |
(?imx) | 正則表示式包含三種可選標誌:i, m, 或 x 。隻影響括號中的區域。 |
(?-imx) | 正則表示式關閉 i, m, 或 x 可選標誌。隻影響括號中的區域。 |
(?: re) | 類似 (…), 但是不表示一個組 |
(?imx: re) | 在括號中使用i, m, 或 x 可選標誌 |
(?-imx: re) | 在括號中不使用i, m, 或 x 可選標誌 |
(?#…) | 註釋. |
(?= re) | 前向肯定界定符。如果所含正則表示式,以 … 表示,在當前位置成功匹配時成功,否則失敗。但一旦所含表示式已經嘗試,匹配引擎根本沒有提高;模式的剩餘部分還要嘗試界定符的右邊。 |
(?! re) | 前向否定界定符。與肯定界定符相反;當所含表示式不能在字串當前位置匹配時成功 |
(?> re) | 匹配的獨立模式,省去回溯。 |
\w | 匹配字母數字及下劃線 |
\W | 匹配非字母數字及下劃線 |
\s | 匹配任意空白字元,等價於 [\t\n\r\f]. |
\S | 匹配任意非空字元 |
\d | 匹配任意數字,等價於 [0-9]. |
\D | 匹配任意非數字 |
\A | 匹配字串開始 |
\Z | 匹配字串結束,如果是存在換行,只匹配到換行前的結束字串。 |
\z | 匹配字串結束 |
\G | 匹配最後匹配完成的位置。 |
\b | 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, ‘er\b’ 可以匹配”never” 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。 |
\B | 匹配非單詞邊界。’er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。 |
\n, \t, 等. | 匹配一個換行符。匹配一個製表符。等 |
\1…\9 | 匹配第n個分組的內容。 |
\10 | 匹配第n個分組的內容,如果它經匹配。否則指的是八進位制字元碼的表示式。 |
相關推薦
第六節 Python正則表示式
正則表示式(初級) 正則表示式定義 正則表示式用於字串的匹配工作 正則表示式的步驟 1. 建立正則表示式 2. 通過正則表示式匹配字串 #正則表示式 #正則表示式用作模式匹配 # 模式pattern 匹配match import re pa
Python基礎六:Python 正則表示式
Python 正則表示式正則表示式 (Regular Expression) 又稱 RegEx, 是用來匹配字元的一種工具. 在一大串字元中尋找你需要的內容. 它常被用在很多方面, 比如網頁爬蟲, 文稿整理, 資料篩選等等.比如我需要爬取網頁中每一頁的標題. 而網頁中的標題常
Google's Python Class(六)——Python 正則表示式
正則表示式是一種用於匹配文字模式的強大的語言。這部分對正則表示式本身做了基本介紹,這些內容足以幫助我們做 Python 練習,並且介紹了在 Python 中如何使用正則表示式。Python 的 “re” 模組提供了對正則表示式的支援。 在 Python 中
Python 正則表示式驗證十六進位制數字
1. Find any hexadecimal number in a larger body of text \b[0-9a-fA-F]+\b 2. Check whether a text string holds just a hexadecimal number
Python正則表示式的簡單應用和示例演示
前一陣子小編給大家連續分享了十篇關於Python正則表示式基礎的文章,感興趣的小夥伴可以點選連結進去檢視。今天小編給大家分享的是Python正則表示式的簡單應用和示例演示,將前面學習的Python正則表示式做一個概括。 下面的栗子是用於提取高考日期,一般來說,我們填寫日期都會寫2018年6月7日,但
Python正則表示式初識(九)
繼續分享Python正則表示式的基礎知識,今天給大家分享的特殊字元是[\u4E00-\u9FA5],這個特殊字元最好能夠記下來,如果記不得的話通過百度也是可以一下子查到的。 該特殊字元是固定的寫法,其代表的意思是漢字。換句話說,只要字元中是漢字,就可以通過該字元進行匹配,該特殊字元也是用中括號括起來的。
Python 正則表示式:compile,match
本文以匹配×××ID為例,介紹re模組的compile與match的用法 複雜匹配 = re.compile(正則表示式): 將正則表示式例項化 +
Python 正則表示式模組詳解
由於最近需要使用爬蟲爬取資料進行測試,所以開始了爬蟲的填坑之旅,那麼首先就是先系統的學習下關於正則相關的知識啦。所以將下面正則方面的知識點做了個整理。語言環境為Python。主要講解下Python的Re模組。 下面的語法我就主要列出一部分,剩下的在python官網直接查閱即可:docs.python.org
Python 正則表示式:search
本文介紹re模組的search的用法 複雜匹配 = re.compile(正則表示式): 將正則表示式例項化 + re.search(
Python | 正則表示式的常見用法
正則表示式的常見用法分為兩塊內容,第一部分是一般具有正則的高階語言都支援的功能,第二部分講解Python所獨特具備的正則特性。 Part 1 正則表示式是由普通字元(例如字元a到z)以及特殊字元(稱為“元字元”)組成的文字模式。模式用於在搜尋文字時要匹配一個或多個字串。
python 正則表示式找出字串中的純數字
1、簡單的做法 >>> import re >>> re.findall(r'\d+', 'hello 42 I'm a 32 string 30') ['42', '32', '30'] 然而,這種做法使得字串中非純數字也會識別 >
python 正則表示式 簡介
python 正則表示式 簡介 1.正則表示式:描述字串排列的一套規則 2.可以使用正則表示式提取出所有滿足規則的字串 3.在python中使用re模組是實現在python正則表示式的功能 正則表示式的基礎知識: 1.原子 2.元字元 3.模式修正 原子 :原子是正則表示式中最基
Python 正則表示式:findall
本文以匹配×××IP為例,介紹re模組的findall的用法: 返回值->列表 複雜匹配 = re.compile(正則表示式): 將正則表示式例項化 + &
Python正則表示式:re模組
正則表示式: 使用單個字串來描述、匹配一系列匹配某個句法規則的字串正則表.通常被用來檢索、替換那些符合某個模式(規則)的文字.python自1.5起提供了re模組,它提供了perl風格的正則表示式. re模組簡介 re.match函式 功能 嘗試從字串的起始位置開始匹配一個模式,如
Python 正則表示式:sub
作用:替換字串中的某字串 本文以 ‘×××’掩蓋手機號部分數字 為例,介紹re模組的sub的用法: 返回值 -> 列表 複雜匹配 = re.compile(正則表示式): 將正則表示式例項化 +&n
python正則表示式學習筆記
正則表示式 學習資源:https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md 正則表達例子: | A|B 
python 正則表示式匹配特定浮點數
def is_decimal(num): import re #以數字開頭,小數點後保留1位數字或兩位數字或者沒有小數部分 dnumre = re.compile(r"""^[0-9]+(\.[0-9]{1,2})?$""") result = d
python--正則表示式的實戰
正則表示式是在re模組裡的,所以需要事前匯入re模組,re模組裡面的search()方法用於在字串中搜索正則表示式模式第一次出現的位置。 注意:下標從0開始,原字串前面需要加入r'原字串' 上圖因為.號可以匹配除了換行符之外的任何字元,所以它匹配了I,也就是第一個字元
PYthon 正則表示式設定大小寫匹配
在python中經常會需要區分大小寫,在此介紹一種最常用的設定方法: 一:確定要匹配的文字 text="[email protected],[email protected],[email protected]" &
Python 正則表示式:split
作用:用正則表示式的字元分割字串,正則的字元會被拋棄。 本文以 提取URL的地址與引數 為例,介紹re模組的split的用法: 返回值 -> 列表 複雜匹配 = re.compile(正則表示式): 將正則表示式例項化 &nb