国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-22 23:31:32
字體:
來源:轉載
供稿:網友

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

代碼如下:

import restr="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特有的,這是 正則 所特有的 , 任何一門高級語言使用正則都滿足這個特點:有括號時只能匹配到括號中的內容,沒有括號【相當于在最外層增加了一個括號】。在正則里面 “()” 代表的是分組的意思,一個括號代表一個分組,你只能匹配到"()"中的內容

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延庆县| 清新县| 布尔津县| 崇仁县| 彭山县| 太保市| 桓台县| 德清县| 萨迦县| 句容市| 汽车| 广灵县| 金寨县| 宁远县| 龙门县| 河北省| 托克托县| 彩票| 禹州市| 凉城县| 襄樊市| 邵武市| 泰兴市| 年辖:市辖区| 石河子市| 道孚县| 托克逊县| 确山县| 吉隆县| 泸定县| 根河市| 马公市| 唐海县| 凉城县| 峨边| 商洛市| 福安市| 咸宁市| 吉木乃县| 青岛市| 通许县|