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

溫馨提示×

溫馨提示×

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

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

關于Python正則表達式 findall函數問題詳解

發布時間:2020-09-30 07:34:53 來源:腳本之家 閱讀:168 作者:wdc 欄目:開發技術

在寫正則表達式的時候總會遇到不少的問題, 特別是在表達式有多個元組的時候。下面看下re模塊下的findall()函數和多個表達式元組相遇的時候會出現什么樣的坑。

代碼如下:

import re
str="a b c d"
regex0=re.compile("((\w+)\s+\w+)")
print(regex0.findall(str))
regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(str))
regex2=re.compile("\w+\s+\w+")
print(regex2.findall(str))

結果:

[('a b', 'a'), ('c d', 'c')]
['a', 'c']
['a b', 'c d']

可能結果有點意外,下面解釋一下

第一個正則表達式中是帶有2個括號的,我們可以看到其輸出是一個list 中包含2個 tuple

第二個正則表達式中帶有1個括號,其輸出的內容就是括號匹配到的內容,而不是整個表達式所匹配到的結果。

第三個正則表達式中不帶有括號,其輸出的內容就是整個表達式所匹配到的內容。

結論:findall()返回的是括號所匹配到的結果(如regex1),多個括號就會返回多個括號分別匹配到的結果(如regex),如果沒有括號就返回就返回整條語句所匹配到的結果(如regex2)。所以在提取數據的時候就需要注意這個坑。

實際上是由其并不是python特有的,這是 正則 所特有的 , 任何一門高級語言使用正則都滿足這個特點:有括號時只能匹配到括號中的內容,沒有括號【相當于在最外層增加了一個括號】。在正則里面 “()” 代表的是分組的意思,一個括號代表一個分組,你只能匹配到"()"中的內容

向AI問一下細節

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

AI

延庆县| 霍山县| 万安县| 诏安县| 炉霍县| 安国市| 印江| 阳新县| 西盟| 周口市| 漾濞| 黄浦区| 永仁县| 太仓市| 久治县| 扎鲁特旗| 文水县| 泸溪县| 元氏县| 石狮市| 宜城市| 赤水市| 江川县| 绿春县| 锦屏县| 彭山县| 宣威市| 岳池县| 清丰县| 孝昌县| 迁安市| 德江县| 夏邑县| 石河子市| 营口市| 河曲县| 万山特区| 武冈市| 苗栗县| 江西省| 永年县|