對python3中的RE(正則表達式)-詳細總結(jié)
1.引入正則模塊(Regular Expression)
要使用python3中的RE則必須引入 re模塊
import re #引入正則表達式
2.主要使用的方法 match(), 從左到右進行匹配
#pattern 為要校驗的規(guī)則 #str 為要進行校驗的字符串 result = re.match(pattern, str) #如果result不為None,則group方法則對result進行數(shù)據(jù)提取
3. 正則表達式
1️⃣單字符匹配規(guī)則
字符 功能 . 匹配任意1個字符(除了\n) [] 匹配[]中列舉的字符 \d 匹配數(shù)字,也就是0-9 \D 匹配非數(shù)字,也就是匹配不是數(shù)字的字符 \s 匹配空白符,也就是 空格\tab \S 匹配非空白符,\s取反 \w 陪陪單詞字符, a-z, A-Z, 0-9, _ \W 匹配非單詞字符, \w取反
2️⃣表示數(shù)量的規(guī)則
字符 功能 * 匹配前一個字符出現(xiàn)0次多次或者無限次,可有可無,可多可少 + 匹配前一個字符出現(xiàn)1次多次或則無限次,直到出現(xiàn)一次 ? 匹配前一個字符出現(xiàn)1次或者0次,要么有1次,要么沒有 {m} 匹配前一個字符出現(xiàn)m次 {m,} 匹配前一個字符至少出現(xiàn)m次 {m,n} 匹配前一個字符出現(xiàn)m到n次
例一: 驗證手機號碼是否符合規(guī)則(不考慮邊界問題)
#首先清楚手機號的規(guī)則 #1.都是數(shù)字 2.長度為11 3.第一位是1 4.第二位是35678中的一位 pattern = "1[35678]\d{9}" phoneStr = "18230092223" result = re.match(pattern, phoneStr) result.group() #執(zhí)行結(jié)果如下圖:
4. 原始字符串raw, 先來看如下實例:
在上圖中: 在給str賦值"\nabc"前加上"r"之后,python解釋器會自動給str的值"\nabc"在加上一個"\".
使str在被打印的時候,能夠保持原始字符串的值"\nabc"打印出來.
例二: (原始字符串在正則表達式中的應(yīng)用)
假若沒有原始自付出r,則我們就要進行如下的操作: 給pattern加上雙倍的"\"以避免轉(zhuǎn)義字符中減少"\".會比較麻煩
當我們使用r原始字符串時,就不必考慮字符串的轉(zhuǎn)移問題,更易集中解決字符匹配問題.
5. 表示邊界
字符 功能 ^ 匹配字符串開頭 $ 匹配字符串結(jié)尾 \b 匹配一個單詞的邊界 \B 匹配非單詞邊界
例三: 邊界(制定規(guī)則來匹配str="ho ve r")
import re #定義規(guī)則匹配str="ho ve r" #1. 以字母開始 #2. 中間有空字符 #3. ve兩邊分別限定匹配單詞邊界 pattern = r"^\w+\s\bve\b\sr" str = "ho ve r" result = re.match(pattern, str) result.group()
6. 匹配分組
字符 功能 | 匹配左右任意一個表達式 (ab) 將括號中字符作為一個分組 \num 引用分組num匹配到的字符串 (?P<name>) 分組起別名 (?P=name) 引用別名為name分組匹配到的字符串
例四: 匹配出0-100之間的數(shù)字
import re #匹配出0-100之間的數(shù)字 #首先:正則是從左往又開始匹配 #經(jīng)過分析: 可以將0-100分為三部分 #1. 0 "0$" #2. 100 "100$" #3. 1-99 "[1-9]\d{0,1}$" #所以整合如下 pattern = r"0$|100$|[1-9]\d{0,1}$" #測試數(shù)據(jù)為0,3,27,100,123 result = re.match(pattern, "27") result.group() #將0考慮到1-99上,上述pattern還可以簡寫為:pattern=r"100$|[1-9]?\d{0,1}$" #測試結(jié)果如下圖:
例五: 匹配分組,獲取頁面中的<h1>標簽中的內(nèi)容
import re #匹配分組,獲取頁面<h1>標簽中的內(nèi)容, 爬蟲的時候會用到 str = "<h1>hello world!<h1>" pattern = r"<h1>(.*)</h1>" result = re.match(pattern, str) result.group() #執(zhí)行如下圖
例六: 分組引用, 精確獲取多個標簽內(nèi)的內(nèi)容
import re #引用分組,精確獲取多個標簽內(nèi)的內(nèi)容 #"\1"是對第一個分組的引用,同理...... str = "<span><h1>hello world!</h1></span>" pattern = r"<(.+)><(.+)>.*</\2></\1>" result = re.match(pattern, str) result.groups() #執(zhí)行如下圖:
例七-2:分組起別名
import re #分組起別名 str = "<span><h1>hello world!</h1></span>" pattern = "<(?P<key1>.+)><(?P<key2>.+)>(?P<nr>.*)</(?P=key2)></(?P=key1)>" result = re.match(pattern, str) result.groups() #執(zhí)行如下圖:
以上這篇對python3中的RE(正則表達式)-詳細總結(jié)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持我們。
上一篇:還不會正則表達式?趕快看這篇!
欄 目:正則表達式
本文標題:對python3中的RE(正則表達式)-詳細總結(jié)
本文地址:http://mengdiqiu.com.cn/a1/zhengzebiaodashi/11163.html
您可能感興趣的文章
- 01-11python正則表達式之對號入座篇
- 01-11Python正則表達式中的re.S的作用詳解
- 01-11詳解Python中的正則表達式
- 01-11Python 正則表達式匹配字符串中的http鏈接方法
- 01-11解決新django中的path不能使用正則表達式的問題
- 01-11python使用BeautifulSoup與正則表達式爬取時光網(wǎng)不同地區(qū)top100電影并
- 01-11Python面向?qū)ο罂偨Y(jié)及類與正則表達式詳解
- 01-11Python中的正則表達式與JSON數(shù)據(jù)交換格式
- 01-11詳解Python3中的正則表達式的基本用法
- 01-11正則表達式中的正向預查和負向預查


閱讀排行
本欄相關(guān)
- 01-11正則表達式實現(xiàn)添加、刪除、替換三
- 01-11正則表達式之匹配數(shù)字范圍
- 01-11python 用正則表達式篩選文本信息的實
- 01-11正則表達式匹配路由的實現(xiàn)代碼
- 01-11python爬蟲正則表達式之處理換行符
- 01-11js正則表達式 匹配兩個特定字符間的
- 01-11正則表達式截取身份證號碼加密的方
- 01-11python正則表達式之對號入座篇
- 01-11MySQL使用正則表達式進行查詢操作經(jīng)典
- 01-11詳解正則表達式實現(xiàn)二代身份證號碼
隨機閱讀
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結(jié)
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文