正則表達式

regular expression, regex, RE
正則表達式是用來簡潔表達一組字符串的表達式

image.png

正則表達式的優(yōu)勢:簡介悯搔、一行勝千言癌椿、一行就是特征(模式)
正則表達式在文本處理中十分常用:
表達文本類型的特征(病毒、入侵等)
同時查找或替換一組字符串
匹配字符串的全部或部分

image.png

編譯:將符合正則表達式語法的字符串轉(zhuǎn)換成正則表達式特征

正則表達式語法

正則表達式是由字符和操作符構(gòu)成

image.png
image.png

正則表達式語法實例:
P(Y|YT|YTH|YTHO)?N 對應(yīng) 'PN'睹栖、'PYN'基括、'PYTN'、'PYTHN'年堆、'PYTHON'
PYTHON+ 對應(yīng)
'PYTHON'、'PYTHONN'盏浇、'PYTHONNN' …
PY[TH]ON 對應(yīng)
'PYTON'变丧、'PYHON'
PY[^TH]?ON 對應(yīng)
'PYON'、'PYaON'绢掰、'PYbON'锄贷、'PYcON'…
PY{:3}N 對應(yīng)
'PN'译蒂、'PYN'、'PYYN'谊却、'PYYYN'…

image.png
image.png

python RE庫的使用

RE庫是python庫的標(biāo)準庫,主要用于字符串匹配
import re
re庫采用raw string類型表示正則表達式哑芹,表示為:r'text'
r'[1‐9]\d{5}'
r'\d{3}‐\d{8}|\d{4}‐\d{7}'
raw string是不包含對轉(zhuǎn)義符再次轉(zhuǎn)義的字符串
re庫也可以采用string類型表示正則表達式炎辨,但更繁瑣
例如:
'[1‐9]\d{5}'
'\d{3}‐\d{8}|\d{4}‐\d{7}'
建議:當(dāng)正則表達式包含轉(zhuǎn)義符時,使用raw string

RE庫的主要功能函數(shù)

image.png

re.search(pattern, string, flags=0)
在一個字符串中搜索匹配正則表達式的第一個位置返回match對象
? pattern : 正則表達式的字符串或原生字符串表示
? string : 待匹配字符串
? flags : 正則表達式使用時的控制標(biāo)記

image.png
image.png

re.match(pattern, string, flags=0)
從一個字符串的開始位置起匹配正則表達式返回match對象
? pattern : 正則表達式的字符串或原生字符串表示
? string : 待匹配字符串
? flags : 正則表達式使用時的控制標(biāo)記

image.png

re.findall(pattern, string, flags=0)
搜索字符串聪姿,以列表類型返回全部能匹配的子串
? pattern : 正則表達式的字符串或原生字符串表示
? string : 待匹配字符串
? flags : 正則表達式使用時的控制標(biāo)記

image.png

re.split(pattern, string, maxsplit=0, flags=0)
將一個字符串按照正則表達式匹配結(jié)果進行分割返回列表類型
? pattern : 正則表達式的字符串或原生字符串表示
? string : 待匹配字符串
? maxsplit: 最大分割數(shù)碴萧,剩余部分作為最后一個元素輸出
? flags : 正則表達式使用時的控制標(biāo)記

image.png

re.finditer(pattern, string, flags=0)
搜索字符串,返回一個匹配結(jié)果的迭代類型末购,每個迭代元素是match對象
? pattern : 正則表達式的字符串或原生字符串表示
? string : 待匹配字符串
? flags : 正則表達式使用時的控制標(biāo)記

image.png

re.sub(pattern, repl, string, count=0, flags=0)
在一個字符串中替換所有匹配正則表達式的子串返回替換后的字符串
? pattern : 正則表達式的字符串或原生字符串表示
? repl : 替換匹配字符串的字符串
? string : 待匹配字符串
? count : 匹配的最大替換次數(shù)
? flags : 正則表達式使用時的控制標(biāo)記

image.png
image.png

RE庫的一種等價用法

rst = re.search(r'[1‐9]\d{5}', 'BIT 100081')
pat = re.compile(r'[1‐9]\d{5}')
rst = pat.search('BIT 100081')
面向?qū)ο笥梅ǎ壕幾g后的多次操作
函數(shù)式用法:一次性操作
regex = re.compile(pattern, flags=0)
將正則表達式的字符串形式編譯成正則表達式對象
? pattern : 正則表達式的字符串或原生字符串表示
? flags : 正則表達式使用時的控制標(biāo)記
regex = re.compile(r'[1‐9]\d{5}')

image.png

RE庫的Match對象

Match對象是一次匹配的結(jié)果破喻,包含匹配的很多信息

match = re.search(r'[1‐9]\d{5}', 'BIT 100081')
if match:
print(match.group(0))
type(match)
<class '_sre.SRE_Match'>
Match對象的屬性

image.png

Match 對象的方法

image.png
image.png

RE庫的貪婪匹配和最小匹配

image.png
image.png
image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盟榴,隨后出現(xiàn)的幾起案子曹质,更是在濱河造成了極大的恐慌,老刑警劉巖擎场,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羽德,死亡現(xiàn)場離奇詭異,居然都是意外死亡迅办,警方通過查閱死者的電腦和手機宅静,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來站欺,“玉大人姨夹,你說我怎么就攤上這事》撸” “怎么了磷账?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝴韭。 經(jīng)常有香客問我够颠,道長,這世上最難降的妖魔是什么榄鉴? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任履磨,我火速辦了婚禮,結(jié)果婚禮上庆尘,老公的妹妹穿的比我還像新娘剃诅。我一直安慰自己,他們只是感情好驶忌,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布矛辕。 她就那樣靜靜地躺著笑跛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪聊品。 梳的紋絲不亂的頭發(fā)上飞蹂,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音翻屈,去河邊找鬼陈哑。 笑死,一個胖子當(dāng)著我的面吹牛伸眶,可吹牛的內(nèi)容都是我干的惊窖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼厘贼,長吁一口氣:“原來是場噩夢啊……” “哼界酒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘴秸,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤毁欣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赁遗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體署辉,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年岩四,在試婚紗的時候發(fā)現(xiàn)自己被綠了哭尝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡剖煌,死狀恐怖材鹦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耕姊,我是刑警寧澤桶唐,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站茉兰,受9級特大地震影響尤泽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜规脸,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一坯约、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧莫鸭,春花似錦闹丐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衫仑。三九已至,卻和暖如春堕花,著一層夾襖步出監(jiān)牢的瞬間文狱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工航徙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留如贷,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓到踏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尚猿。 傳聞我的和親對象是個殘疾皇子窝稿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • re模塊手冊 本模塊提供了和Perl里的正則表達式類似的功能,不關(guān)是正則表達式本身還是被搜索的字符串凿掂,都可以...
    喜歡吃栗子閱讀 4,012評論 0 13
  • 本文介紹了Python對于正則表達式的支持伴榔,包括正則表達式基礎(chǔ)以及Python正則表達式標(biāo)準庫的完整介紹及使用示例...
    Python程序媛閱讀 1,353評論 0 22
  • 1. 正則表達式基礎(chǔ) 1.1. 簡單介紹 正則表達式并不是Python的一部分。正則表達式是用于處理字符串的強大工...
    隨風(fēng)化作雨閱讀 357評論 0 0
  • 正則表達式有很多流派庄萎,也有很多的特性踪少,不同的語言支持度也是不一樣的。本篇文章是寫Python中的正則表達式的用法的...
    Moscow1147閱讀 1,102評論 0 0
  • 云南行第二站,香格里拉忍捡。 從麗江驅(qū)車前往香格里拉約4個小時集漾,司機師傅提醒著海拔將從2400升至3300,由于沿途正...
    bfbly閱讀 265評論 0 0