當前位置:
首頁 > 最新 > Python——正則表達式基礎知識的簡介

Python——正則表達式基礎知識的簡介

正則表達式(regex)是一些由字元和特殊符號組成的字元串,它們描述了模式的重複,因此正則表達式能按照某種模式匹配一系列有相似特徵的字元串(能夠匹配多個字元串)。

Python 通過標準庫中的 re 模塊來支持正則表達式。

搜索和匹配(模式匹配)的區別

在Python中有兩種方法完成模式匹配:「搜索」(searching),即在字元串任意部分中搜索匹配的模式;而「匹配」(matching)是指判斷一個字元串能否從起始處全部或者部分地匹配某個模式。

搜索通過search()方法實現,匹配通過調用match()方法實現。

正則表達式基礎知識——特殊符號和字元(元字元)

正則表達式是包含文本和特殊字元的字元串,該字元串描述了可以識別某類字元串的模式。

正則表達式的強大之處在於引入特殊字元來定義字符集、匹配子組和重複模式。

正則表達式基礎知識——特殊符號和字元(元字元)——正向前視斷言

從當前匹配位置開始測試後面字元串是否匹配先行斷言中的內容。

/[a-z]+(?=d+)/匹配"abc100"

[a-z]+匹配字元」abc」,當前的匹配位置變成3。從該位置測試d+是否成立,由於成功匹配到字元100,正則表達式正向斷言成功,返回匹配字元串」abc」,不是"abc100".

正則表達式基礎知識——特殊符號和字元(元字元)——後視斷言

分為正向和負向。斷言的正則表達式不要出現不固定長度量詞,否則極有可能會出現死循環。匹配當前位置左邊的字元,則返回真。如果後視斷言出現在最左邊,默認位置是從0開始,匹配一定會失敗的,所以後視斷言都是讓後面的正則表達式先進行匹配,再回溯,直到匹配到為止。

"(?

/w+/匹配字元:」abc100」,從該位置0開始檢測左邊是否匹配w,匹配失敗。

於是開始回溯,/w+/從字元b開始匹配」bc100」,測試它左側有字元」a」,反向斷言正確。因此匹配到字元串「bc100」。

正則表達式基礎知識——匹配任意單個字元.

.點操作符匹配除了換行符
之外的任意字元——Python正則表達式有一個編譯標記[S 或者 DOTALL],該標記能夠推翻這個限制,使點號能夠匹配換行符。

正則表達式基礎知識——起始或者結尾

如果要匹配字元串的開始位置,必須使用脫字元( ^)或者特殊字元A (反斜線和大寫字母 A)。

後者主要用於那些沒有脫字元的鍵盤(例如,某些國際鍵盤)。同樣,美元符號( $)或者將用於匹配字元串的末尾位置。

正則表達式基礎知識——邊界符

正則表達式基礎知識——[]創建字符集

以前一直理解為匹配[]中的某個元素,其實正確的說法是方括弧創建了一個字符集。

字符集的方法只適用於單字元的情況。

正則表達式基礎知識——閉包操作符

星號操作符( *)將匹配其左邊的正則表達式出現零次或者多次的情況(在計算機編程語言和編譯原理中,該操作稱為 Kleene 閉包)。

加號( +)操作符將匹配一次或者多次出現的正則表達式(也叫做正閉包操作符)

正則表達式基礎知識——重載過很多次的問號?

匹配 0 次或1次

問號緊跟在閉合操作符的後面,它將直接要求正則表達式引擎匹配儘可能少的次數。

正則表達式基礎知識——最少匹配

正則表達式引擎將試圖「吸收」匹配該模式的儘可能多的字元——貪婪匹配。加了問號,如果可能,就在當前的正則表達式中儘可能少地匹配字元,留下儘可能多的字元給後面的模式(如果存在)。

正則表達式基礎知識——圓括弧

當使用正則表達式時,一對圓括弧可以實現以下任意一個(或者兩個)功能:

? 對正則表達式進行分組;

? 匹配子組。

正則表達式基礎知識——圓括弧——分組

原因:

當有兩個不同的正則表達式而且想用它們來比較同一個字元串時;

對正則表達式進行分組可以在整個正則表達式中使用重複操作符(而不是一個單獨的字元或者字符集)。

正則表達式基礎知識——圓括弧——匹配子組

匹配模式的子字元串可以保存起來供後續使用。

作用:要提取所匹配的模式

正則表達式基礎知識——擴展表示法

儘管擴展表示法使用了圓括弧,但是只有( ?P)表述一個分組匹配。其他的都沒有創建一個分組。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

關於 Python 多線程的一些思考
免費直播教你如何零基礎入門Python Web?
Python 菜鳥教程
讓小烏龜可以唱歌——對Python turtle進行拓展!祝全天下的父親們父親節快樂

TAG:Python |

您可能感興趣

Python 正則表達式
Python中的正則表達式
Python 模式匹配與正則表達式
Python爬蟲之正則表達式
Perl 正則表達式
Python正則表達式語法補充
Scala 正則表達式
正則表達式和 Cookie使用
Python 正則表達式(分組)
Python正則表達式的7個使用典範
[python] 常用正則表達式爬取網頁信息及分析HTML標籤總結
MongoDB 正則表達式
Linux shell 邏輯運算符、邏輯表達式詳解
不要在Python中編寫 lambda 表達式了
Keep Talking丨我們如何表達愛。
lambda表達式foreach性能分析
Please sit其實不禮貌,英語怎麼表達「請」?
無法用言語表達的愛!The Void/IF I Were a cat/The Colour Monster
Nature Communications:生化機制對異源表達基因的功能兼容性具有決定性作用
Being in the World——淺談Olafur Eliasson作品在建築、景觀、及城市設計視角下的表達