站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        本篇文章給大家?guī)砹岁P(guān)于python的相關(guān)知識(shí),其中主要介紹了關(guān)于正則表達(dá)式的相關(guān)問題,正則表達(dá)式(Regular Expression)是一段字符串,它可以表示一段有規(guī)律的信息,下面我們一起來看一下,希望對(duì)大家有幫助。

        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        推薦學(xué)習(xí):python視頻教程

        1.1正則表達(dá)式

        正則表達(dá)式(Regular Expression)是一段字符串,它可以表示一段有規(guī)律的信息。Python自帶一個(gè)正則表達(dá)式模塊,通過這個(gè)模塊可以查找、提取、替換一段有規(guī)律的信息。在一萬個(gè)人里面找一個(gè)人很困難,但是在一萬個(gè)人里面找一個(gè)非常“有特點(diǎn)”的人卻很容易。假設(shè)有一個(gè)人,皮膚是綠色的,身高三米,那么即使這個(gè)人混在一萬人中,其他人也能一眼找到他。這個(gè)“尋找”的過程,在正則表達(dá)式中叫作“匹配”。在程序開發(fā)中,要讓計(jì)算機(jī)程序從一大段文本中找到需要的內(nèi)容,就可以使用正則表達(dá)式來實(shí)現(xiàn)。使用正則表達(dá)式有如下步驟。
        (1)尋找規(guī)律。
        (2)使用正則符號(hào)表示規(guī)律。
        (3)提取信息。

        1.2正則表達(dá)式的基本符號(hào)

        1.2.1 點(diǎn)號(hào) “ . ”

        一個(gè)點(diǎn)號(hào)可以代替除了換行符以外的任何一個(gè)字符,包括但不限于英文字母、數(shù)字、漢字、英文標(biāo)點(diǎn)符號(hào)和中文標(biāo)點(diǎn)符號(hào)。

        1.2.2 星號(hào) “ * ”

        一個(gè)星號(hào)可以表示它前面的一個(gè)子表達(dá)式普通字符、另一個(gè)或幾個(gè)正則表達(dá)式符號(hào))0次到無限次。

        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        如上均可以:(星號(hào)表示的是前面的一個(gè)表達(dá)式)
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        1.2.3 點(diǎn)號(hào)+星號(hào) “ .* ”

        點(diǎn)號(hào)表示任意非換行符的字符,星號(hào)表示匹配它前面的字符0次或者任意多次。所以“.*”表示匹配一串任意長度的字符串任意次。
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        如上均可以:
        它表示在“如”和“哈”中間出現(xiàn)“任意多個(gè)除了換行符以外的任意字符”。
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        1.2.4 問號(hào)“ ? ”

        問號(hào)表示它前面的子表達(dá)式0次或者1次。注意,這里的問號(hào)是英文問號(hào)歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        如上均可以:歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        1.2.5 點(diǎn)號(hào)+星號(hào)+問號(hào)“ .*?” (最常用)

        結(jié)合后用法:
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        如上均可以:
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        注:“ .*?” 與“ .* ”的區(qū)別
        .*?的意思就是匹配一個(gè)能滿足要求的最短字符串。
        一句話總結(jié)如下。
        ①“.*”:貪婪模式,獲取最長的滿足條件的字符串。
        ②“.*? ”:非貪婪模式,獲取最短的能滿足條件的字符串。

        1.2.6 小括號(hào)“()”

        從一段字符串中“提取”出一部分的內(nèi)容.
        有如下一個(gè)字符串:
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        可以看出,這里的密碼左邊有一個(gè)英文冒號(hào),右邊有一個(gè)漢字“你”。當(dāng)構(gòu)造一個(gè)正則表達(dá)式:.*?你時(shí),得到的結(jié)果將會(huì)是:
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        然而,冒號(hào)和漢字“你”并不是密碼的一部分,如果只想要“12345abcde”,就需要使用括號(hào):
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        得到:
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        1.2.7 反斜杠 “ ”

        在正則表達(dá)式里面,很多符號(hào)都是有特殊意義的,例如問號(hào)、星號(hào)、大括號(hào)、中括號(hào)和小括號(hào)。反斜杠需要和其他的字符配合使用來把特殊符號(hào)變成普通符號(hào),把普通符號(hào)變成特殊符號(hào)。
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        1.2.8 數(shù)字 “ d”

        正則表達(dá)式里面使用“d”來表示一位數(shù)字。
        如果要提取兩個(gè)數(shù)字,可以使用dd;如果要提取3個(gè)數(shù)字,可以使用ddd。但是如果不知道這個(gè)數(shù)有多少位怎么辦呢?就需要用*號(hào)來表示一個(gè)任意位數(shù)的數(shù)字。

        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        全部都可以使用下面這個(gè)正則表達(dá)式來表示:
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        1.3 使用正則表達(dá)式

        Python的正則表達(dá)式模塊名字為“re”,也就是“regular expression”的首字母縮寫。在Python中需要首先導(dǎo)入這個(gè)模塊再進(jìn)行使用。導(dǎo)入的語句為:

        import re

        1.3.1 findall 方法

        Python的正則表達(dá)式模塊包含一個(gè)findall方法,它能夠以列表的形式返回所有滿足要求的字符串。
        findall的函數(shù)原型為:

        re.findall(pattern,string,flags=0)

        pattern表示正則表達(dá)式,string表示原來的字符串,flags表示一些特殊功能的標(biāo)志。findall的結(jié)果是一個(gè)列表,包含了所有的匹配到的結(jié)果。如果沒有匹配到結(jié)果,就會(huì)返回空列表。

        當(dāng)需要提取某些內(nèi)容的時(shí)候,使用小括號(hào)將這些內(nèi)容括起來,這樣才不會(huì)得到不相干的信息。如果包含多個(gè)“(.*? )”怎么返回呢?如圖3-2所示,返回的仍然是一個(gè)列表,但是列表里面的元素變?yōu)榱嗽M,元組里面的第1個(gè)元素是賬號(hào),第2個(gè)元素為密碼。
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        函數(shù)原型中有一個(gè)flags參數(shù)。這個(gè)參數(shù)是可以省略的。當(dāng)不省略的時(shí)候,具有一些輔助功能,例如忽略大小寫、忽略換行符等。
        這里以忽略換行符為例來進(jìn)行說明要忽略換行符,就需要使用到“re.S”這個(gè)flag。歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        雖然說匹配到的結(jié)果中出現(xiàn)了“n”這個(gè)符號(hào),不過總比什么都得不到強(qiáng)。內(nèi)容里面的換行符在后期清洗數(shù)據(jù)的時(shí)候把它替換掉即可。

        1.3.2 search 方法

        search()的用法和findall()的用法一樣,但是search()只會(huì)返回第1個(gè)滿足要求的字符串。一旦找到符合要求的內(nèi)容,它就會(huì)停止查找。對(duì)于從超級(jí)大的文本里面只找第1個(gè)數(shù)據(jù)特別有用,可以大大提高程序的運(yùn)行效率。

        search()的函數(shù)原型為:歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        對(duì)于結(jié)果,如果匹配成功,則是一個(gè)正則表達(dá)式的對(duì)象;如果沒有匹配到任何數(shù)據(jù),就是None。

        如果需要得到匹配到的結(jié)果,則需要通過.group()這個(gè)方法來獲取里面的值。
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        只有在.group()里面的參數(shù)為1的時(shí)候,才會(huì)把正則表達(dá)式里面的括號(hào)中的結(jié)果打印出來。

        .group()的參數(shù)最大不能超過正則表達(dá)式里面括號(hào)的個(gè)數(shù)。參數(shù)為1表示讀取第1個(gè)括號(hào)中的內(nèi)容,參數(shù)為2表示讀取第2個(gè)括號(hào)中的內(nèi)容,以此類推。
        (注意圖里的不是findall)
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        1.3.3 compile 方法

        re.findall()自帶re.compile()的功能,所以沒有必要使用re.compile()。

        1.4 正則表達(dá)式的提取技巧

        1.4.1 先抓大后抓小:二次提取

        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)

        1.4.2 括號(hào)里括號(hào)外

        括號(hào)內(nèi)可以有其他字符。
        具體影響見下圖。
        歸納整理Python正則表達(dá)式知識(shí)點(diǎn)
        如果括號(hào)里面有其他普通字符,那么這些普通字符就會(huì)出現(xiàn)在獲取的結(jié)果里面。

        推薦學(xué)習(xí):python視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 久久91精品国产91久久小草| 中文字幕精品一区二区日本| 91国在线啪精品一区| 久久九九久精品国产| 久久精品国产免费一区| 无码国产69精品久久久久网站| 国产精品成人一区二区| 成人国产精品一区二区网站| 亚洲码国产精品高潮在线| 国产精品玖玖美女张开腿让男人桶爽免费看| 欧美精品久久久久久久自慰 | 亚洲AV永久无码精品水牛影视| 国产精品综合专区中文字幕免费播放| 久久777国产线看观看精品| 国产麻豆一精品一AV一免费 | 精品国产日产一区二区三区| 老司机午夜精品视频资源| 亚洲午夜成人精品电影在线观看 | 国产精品亚洲w码日韩中文| 国产成人精品亚洲日本在线| 精品国产一区二区三区无码| 中文字幕精品无码一区二区 | 亚洲处破女AV日韩精品| 亚洲精品tv久久久久| 久久久久无码精品| 精品久久久久久国产免费了| 99久久精品免费看国产免费| 久久国产精品国产自线拍免费| 国产麻豆精品久久一二三| 精品久久久久久久无码| 久久精品aⅴ无码中文字字幕不卡| 日韩精品久久无码中文字幕| 一本色道久久88精品综合| 亚洲精品成人网久久久久久| 久久亚洲国产成人精品无码区| 精品人妻少妇嫩草AV无码专区| 精品欧美激情在线看| 蜜臀久久99精品久久久久久| 日韩精品成人亚洲专区| 亚洲国产精品综合久久网络 | 日韩精品无码一区二区三区不卡 |