本文目錄一覽:
python正則表達式是什麼?
python正則表達式是使用單個字符串來描述、匹配某個句法規則的字符串,常被用來檢索、替換那些符合某個模式(規則)的文本。最初的正則表達式出現於理論計算機科學的自動控制理論和形式化語言理論中。
1950 年,數學家斯蒂芬·科爾·克萊尼利用稱之為「正則集合」的數學符號來描述此模型。肯·湯普遜將此符號系統引入編輯器 QED,隨後是 UNIX 上的編輯器 ed,並最終引入 grep。自此以後,正則表達式被廣泛地應用於各種 UNIX 或類 UNIX 系統的工具中。目前,許多程序設計語言都支持利用正則表達式進行字符串操作。
正則表達式常用的特殊字符:
\:將下一個字符標記為一個特殊字符、一個原義字符(Identity Escape,有 “^” “$” “(” “)” “*” “+” “{” “|” 共計12個)、一個向後引用(backreferences)或一個八進制轉義符。例如「n」匹配字符「n」,「\n」匹配一個換行符,「\\」匹配「\」,「\(」則匹配「(」。
^:匹配輸入字符串的開始位置。如果設置了正則表達式的多行屬性,「^」也可以匹配「\n」或「\r」之 後的位置。
[a-z]:字符範圍,匹配指定範圍內的任意字符。例如「[a-z]」可以匹配「a」到「z」範圍內的任意小寫字母字符。
\s:匹配任何空白字符,包括空格、製表符、換頁符等,等效於「[\f\n\r\t\v]」。注意 Unicode 正則表達式 會匹配全角空格符。
學Python正則表達式,這一篇就夠了
正則表達式是一個特殊的字符序列,可以幫助您使用模式中保留的專門語法來匹配或查找其他字符串或字符串集。 正則表達式在UNIX世界中被廣泛使用。
註:很多開發人員覺得正則表達式比較難以理解,主要原因是缺少使用或不願意在這上面花時間。
re模塊在Python中提供對Perl類正則表達式的完全支持。如果在編譯或使用正則表達式時發生錯誤,則re模塊會引發異常re.error。
在這篇文章中,將介紹兩個重要的功能,用來處理正則表達式。 然而,首先是一件小事:有各種各樣的字符,這些字符在正則表達式中使用時會有特殊的意義。 為了在處理正則表達式時避免混淆,我們將使用:r’expression’原始字符串。
匹配單個字符的基本模式
編譯標誌可以修改正則表達式的某些方面。標誌在re模塊中有兩個名稱:一個很長的名稱,如IGNORECASE,和一個簡短的單字母形式,如。
1.match函數
此函數嘗試將RE模式與可選標誌的字符串進行匹配。
下面是函數的語法 :
這裡是參數的描述 :
pattern : 這是要匹配的正則表達式。
string : 這是字符串,它將被搜索用於匹配字符串開頭的模式。 |
flags : 可以使用按位OR(|)指定不同的標誌。 這些是修飾符,如下表所列。
re.match函數在成功時返回匹配對象,失敗時返回None。使用match(num)或groups()函數匹配對象來獲取匹配的表達式。
示例
當執行上述代碼時,會產生以下結果 :
2.search函數
此函數嘗試將RE模式與可選標誌的字符串進行匹配。
下面是這個函數的語法 :
這裡是參數的描述 :
pattern : 這是要匹配的正則表達式。
string : 這是字符串,它將被搜索用於匹配字符串開頭的模式。 |
flags : 可以使用按位OR(|)指定不同的標誌。 這些是修飾符,如下表所列。
re.search函數在成功時返回匹配對象,否則返回None。使用match對象的group(num)或groups()函數來獲取匹配的表達式。
示例
當執行上述代碼時,會產生以下結果 :
3.匹配與搜索
Python提供基於正則表達式的兩種不同的原始操作:match檢查僅匹配字符串的開頭,而search檢查字符串中任何位置的匹配(這是Perl默認情況下的匹配)。
示例
當執行上述代碼時,會產生以下結果 :
4.搜索和替換
使用正則表達式re模塊中的最重要的之一是sub。
模塊
此方法使用repl替換所有出現在RE模式的字符串,替換所有出現,除非提供max。此方法返回修改的字符串。
示例
當執行上述代碼時,會產生以下結果 :
5.正則表達式修飾符:選項標誌
正則表達式文字可能包含一個可選修飾符,用於控制匹配的各個方面。 修飾符被指定為可選標誌。可以使用異或(|)提供多個修飾符,如前所示,可以由以下之一表示 :
6.正則表達模式
除了控制字符(+ ? . * ^ $ ( ) [ ] { } | ),所有字符都與其自身匹配。 可以通過使用反斜杠將其轉換為控制字符。
7.正則表達式示例
字符常量
字符類
特殊字符類
重複匹配
非貪婪重複
這匹配最小的重複次數 :
用圓括號分組
反向引用
這與以前匹配的組再次匹配 :
備擇方案
python|perl : 匹配「python」或「perl」
rub(y|le) : 匹配 「ruby」 或 「ruble」
Python(!+|?) : 「Python」後跟一個或多個! 還是一個?
錨點
這需要指定匹配位置。
帶括號的特殊語法
開課吧廣場-人才學習交流平台-開課吧
Python需要學習什麼內容,好學嗎?
Python相對來說挺好入門的,不過也不要掉以輕心,學習的時候還是應該認真努力,學習內容整理如下:
Python語言基礎:主要學習Python基礎知識,如Python3、數據類型、字符串、函數、類、文件操作等。
Python語言高級:主要學習Python庫、正則表達式、進程線程、爬蟲、遍歷以及MySQL數據庫。
Python web開發:主要學習HTML、CSS、JavaScript、jQuery等前端知識,掌握python三大後端框架(Django、 Flask以及Tornado)。
Linux基礎:主要學習Linux相關的各種命令,如文件處理命令、壓縮解壓命令、權限管理以及Linux Shell開發等。
Linux運維自動化開發:主要學習Python開發Linux運維、Linux運維報警工具開發、Linux運維報警安全審計開發、Linux業務質量報表工具開發、Kali安全檢測工具檢測以及Kali 密碼破解實戰。
Python爬蟲:主要學習python爬蟲技術,掌握多線程爬蟲技術,分佈式爬蟲技術。
Python數據分析和大數據:主要學習numpy數據處理、pandas數據分析、matplotlib數據可視化、scipy數據統計分析以及python 金融數據分析;Hadoop HDFS、python Hadoop MapReduce、python Spark core、python Spark SQL以及python Spark MLlib。
Python機器學習:主要學習KNN算法、線性回歸、邏輯斯蒂回歸算法、決策樹算法、樸素貝葉斯算法、支持向量機以及聚類k-means算法。
python的正則表達式
1,正則表達式的一些內容
正則表達式主要是用來匹配文本中需要查找的內容,例如在一片文章中找出電話號碼,就中國的來說11位純數字(不說座機),則使用”\d{11}” 意味匹配數字11次,就能準確的查找出文本中的電話號碼. 還有就是在編寫網絡爬蟲的時候需要提取很多超鏈接再次進行爬取,使用正則表達式就很方便.直接匹配http開頭就行,當然也可以使用beautifulsoup的select方法.
看下面的程序看看正則表達提取文本中的郵箱:
\w 匹配字母,數字,下劃線
+ 匹配1次或者多次
re是正則表達式的工具包,工具包出錯的話在anaconda的命令行輸入”pip install re”安裝,其他的工具包也是如此.
re.compile()中的r示意\不是轉義字符,也就是保持後面字符串原樣,findall返回一個列表.下面還有一個版本的程序略有不同.
compile的另一個參數re.IGONORECASE(忽略大小寫),還可以是re.DORALL,多行模式,具體功能也是模糊不清,不過在使用通配符 . 匹配的時候加上re.DOTALL參數能夠匹配換行.如果希望忽略大小寫和多行模式都開啟可以使用re.compile(r’….’,re.IGNORECASE|re.DOTALL) .
表達式使用( ),對匹配到的內容分為3組 也就是(\w+)出現字母,數字,下劃線一次或多次,這個分組就是下面使用match對象的grou()方法的時候的參數.不給參數和參數0都是得到整個匹配到的內容, 參數1得到第一個括號匹配到的內容,以此類推參數2和3,如果沒有括號分組的話使用參數會出現錯誤.
search( )查找和正則式匹配的內容,只匹一次後面的那個找不到.返回一個match對象
\w 匹配字母,數字,下劃線
\W 匹配字母,數字.下劃線之外的所有字符
\d 匹配數字
\D 匹配非數字
\s 匹配空格,製表符,換行符
\S匹配除空格製表符,換行符之外的其他字符
[ …. ]定義自己的匹配,如[aeiouAEIOU ]匹配所有的元音字母,注意不是匹配單詞.
{最少次數,最多次數},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默認為匹配最多次數(貪心匹配),非貪心模式在後面加上問號
? 可選 0次或者1次吧
+匹配1次或多次
*匹配0次或者多次
^ 判斷開頭 ^\d 如果待匹配串是數字開頭則返回第一個數字
$判斷結尾 \d$ 如果待匹配串是數字結尾則返回最後一個數字
. 通配符,匹配除換行之外的所有字符
\d{11} 匹配數字11次
. * 匹配所有字符除 換行
[a-zA-Z0-9._%+-] 小寫和大寫字母、數字、句點、下劃線、百分號、加號或短橫
[a-zA-Z]{2,4} 匹配字母 2 – 4次
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/258364.html