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

溫馨提示×

溫馨提示×

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

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

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

發布時間:2021-11-25 11:20:16 來源:億速云 閱讀:153 作者:iii 欄目:互聯網科技

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

最小匹配

格式

量詞?

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

用處

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

案例

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

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的正則表達式:

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

+表示一個或多個

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

分組

格式

(\w)

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

用處

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

案例

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提取內容的不同可以看到分組的妙用,分組能指定提取符合正則表達式某一段的內容。

分組隱藏

格式

(?:正則表達式)

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

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

用處

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

案例

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<名稱>,英文書名號內是分組的名稱。

用處

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

案例

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個分組。但實際爬蟲的時候經常會遇到多達10個以上的分組。在分組數量多的時候很容易混淆數據,若使用分組命名會非常方便,根據名字讀取對應的數據,提高了代碼可讀性。

“python正則表達式的技巧有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

乐清市| 海盐县| 兴文县| 西藏| 调兵山市| 稷山县| 湾仔区| 思茅市| 祥云县| 蒙城县| 芦山县| 建阳市| 高雄县| 宁海县| 筠连县| 如东县| 大英县| 广河县| 垣曲县| 象山县| 郴州市| 博罗县| 大洼县| 泽普县| 庆云县| 耒阳市| 阳山县| 沅陵县| 石台县| 莱芜市| 新安县| 嫩江县| 侯马市| 科尔| 孝昌县| 景德镇市| 吉林省| 桃园市| 滁州市| 福贡县| 运城市|