python正則表達式的技巧有哪些

本篇內(nèi)容介紹了“python正則表達式的技巧有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

峨眉山網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選成都創(chuàng)新互聯(lián)。

最小匹配

格式

量詞?

注:量詞有{n,m}、?、+、*

用處

在字符串中查找符合正則表達式規(guī)則的最短子字符串。

案例

現(xiàn)有字符串num = ”10-3*(20-10+(-10/5)27/3/3-(-100)/(10-35))",要提取括號中的內(nèi)容。

import re

num = '10-3*(20-10+(-10/5)*27/3/3-(-100)/(10-3*5))+(-5*-6)'num2 = re.findall('\(.+?\)', num)num3 = re.findall('\(.+\)', num)print(num2)print(num3)out:['(20-10+(-10/5)', '(-100)', '(10-3*5)']['(20-10+(-10/5)*27/3/3-(-100)/(10-3*5))']

上述代碼中num2使用了最小匹配,而num3使用了默認的最大匹配。

請注意num2的正則表達式:

.表示匹配除了換行符之外的所有字符

+表示一個或多個

?表示最小匹配,匹配后面第一個)即返回結(jié)果。若沒有這個?會匹配到最后一個)才返回結(jié)果。

分組

格式

(\w)

注:在正則表達式中一對括號包圍的內(nèi)容表示分組,正則表達式中可以有多個分組

用處

匹配字符串,只提取分組中的內(nèi)容,非分組的內(nèi)容舍棄不提取。

案例

str1 = '''
<a>python<a>
<b>java<b>
<c>javascript<c>
'''result1 = re.findall('<\w+>(\w+)<\w+>',str1)print(result1)result2 = re.findall('<(\w+)>\w+<\w+>',str1)print(result2)out:['python', 'java', 'javascript']['a', 'b', 'c']

從result1和result2提取內(nèi)容的不同可以看到分組的妙用,分組能指定提取符合正則表達式某一段的內(nèi)容。

分組隱藏

格式

(?:正則表達式)

注:在括號內(nèi)以?:開頭的分組,匹配到的內(nèi)容會被隱藏。

另:分組隱藏和分組命名不能同時使用。

用處

當有用數(shù)據(jù)和無用數(shù)據(jù)混在一起時,只能先全取出來,然后對無用數(shù)據(jù)做分組隱藏,把有用的數(shù)據(jù)對應的正則表達式用()包起來,這樣即可提取出有用數(shù)據(jù)。

案例

result1 = re.findall('1(\d)(\d)','167189')print(result1)result2 = re.findall('1(?:\d)(\d)','167189')print(result2)out:[('6', '7'), ('8', '9')]['7', '9']

分組命名

格式

(?P<名字>正則表達式)

注:?P<名稱>,英文書名號內(nèi)是分組的名稱。

用處

分組命名在有很多段分組時對不同的分組命名,便于使用,防止混淆。

案例

str1 = '<tag>study python every day</tag>'ret = re.search('<(?P<tag>\w+)>(?P<name>.*?)</(?P=tag)>',str1)print(ret)print(ret.group('tag'))print(ret.group('name'))out:tag
study python every day

上述案例是一個簡單的示范,只有2個分組。但實際爬蟲的時候經(jīng)常會遇到多達10個以上的分組。在分組數(shù)量多的時候很容易混淆數(shù)據(jù),若使用分組命名會非常方便,根據(jù)名字讀取對應的數(shù)據(jù),提高了代碼可讀性。

“python正則表達式的技巧有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

網(wǎng)頁名稱:python正則表達式的技巧有哪些
標題來源:http://muchs.cn/article38/ghijsp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、標簽優(yōu)化、域名注冊網(wǎng)站排名、品牌網(wǎng)站設計、自適應網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站