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 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作品在建築、景觀、及城市設計視角下的表達