中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python正則表達式初識(二)

發布時間:2020-07-13 01:20:39 來源:網絡 閱讀:299 作者:pengdongcheng 欄目:編程語言

前幾天給大家分享了Python正則表達式初識(一),介紹了正則表達式中的三個特殊字符“^”、“.”和“*”,感興趣的伙伴可以戳進去看看,今天小編繼續給大家分享Python正則表達式相關特殊字符知識點。

Python正則表達式初識(二)


1、特殊字符“$”代表的意思是結尾字符。舉個栗子,正則表達式“3$”,表示匹配以3為結尾的字符串。代碼演示如下圖所示。

Python正則表達式初識(二)


正則表達式匹配模式“.*3$”代表以3結尾的任意字符的字符串,很顯然匹配的結果和原始字符串是一致的,所以有返回結果。
2、如果將正則表達式匹配模式改為“.*4$”,則表示以4結尾的任意字符的字符串,此時是沒有任何的輸入結果的,如下圖所示。

Python正則表達式初識(二)


3、正則表達式特殊字符“?”比較常用,其代表的意思是非貪婪匹配模式。默認情況下,匹配字符串是一種貪婪的匹配,換句話說,默認情況下字符串會根據匹配模式,去匹配最大的長度。
4、下圖是一個實例。其中括號代表的是提取字符串的子串,正則表達式會把滿足匹配條件的字符串放到括號里邊。匹配模式“.*(p.*p).*”代表的意思是:左邊的“.* ”的意思是任意字符串,可以是空,也可以是非空的字符串,之后是字符p,中間的“.* ” 的意思也是任意字符串,之后再是一個p,爾后右邊的“.* ” 的意思也是任意字符串。目前的邏輯就是將兩個p中間的字符串連同p一塊取出。

Python正則表達式初識(二)


但是其輸出的結果卻為“pp”,并不是我們想要的“pccccccccccp”結果。原因是正則表達式的貪婪匹配所致,實際上它是反向匹配的,所以從字符串來看,匹配到的結果是“pp”。
5、如果我們使用非貪婪模式,即將匹配模式“.*(p.*p).*”改為模式“.*?(p.*p).*”,在第一“p”之前加個特殊字符“?”,則運行的結果就如下圖所示。

Python正則表達式初識(二)


可以看到匹配模式已經開始從左邊開始進行匹配,答案趨向于我們想要的結果。但是在后面卻出現了兩個p。原因是后面的那個p未指定其為非貪婪模式,所以后面的那個p仍然是從右邊開始反向取值的。
6、接下來,我們繼續使用非貪婪模式,即將匹配模式“.*(p.*p).*”改為模式“.*?(p.*?p).*”,在第二“p”之前也加個特殊字符“?”,則運行的結果就如下圖所示。

Python正則表達式初識(二)


此時可以看到匹配的結果就是我們想要的結果了,原因是此時兩個p均采用了非貪婪模式,所以匹配模式,從左到右順序進行。
7、理解非貪婪模式之后,對于正則表達式的匹配就很好理解了,如下圖的結果將返回“pcccp”,非貪婪模式下。

Python正則表達式初識(二)


8、下圖的結果將返回“pcccpcccccccpppp”,非貪婪模式和貪婪模式共存的情況下。

Python正則表達式初識(二)


非貪婪模式在網絡爬蟲的過程中對于字符串的提取非常重要,務必要理解和掌握。小伙伴們,關于正則表達式的特殊字符“$”和“?”的用法,你們get到了嗎?


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

朝阳区| 湛江市| 彩票| 武义县| 晋中市| 河间市| 西吉县| 金沙县| 平和县| 连平县| 南昌县| 双桥区| 白银市| 田东县| 中西区| 太和县| 长沙市| 凤山县| 陆河县| 南岸区| 盈江县| 永胜县| 太谷县| 阿克苏市| 高清| 平安县| 珠海市| 丰县| 思茅市| 桐柏县| 专栏| 闽清县| 平陆县| 襄樊市| 台南市| 诏安县| 贵阳市| 长海县| 光泽县| 高州市| 钦州市|