国产探花免费观看_亚洲丰满少妇自慰呻吟_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特有的,這是 正則 所特有的 , 任何一門高級語言使用正則都滿足這個特點:有括號時只能匹配到括號中的內容,沒有括號【相當于在最外層增加了一個括號】。在正則里面 “()” 代表的是分組的意思,一個括號代表一個分組,你只能匹配到"()"中的內容

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禹州市| 精河县| 嫩江县| 连城县| 和田县| 浑源县| 河源市| 阳曲县| 安达市| 中宁县| 梁河县| 台山市| 镶黄旗| 宁陕县| 义马市| 台湾省| 南城县| 漾濞| 苍山县| 五寨县| 荆门市| 达拉特旗| 紫金县| 乐业县| 综艺| 长乐市| 驻马店市| 城固县| 博白县| 含山县| 衡阳县| 茶陵县| 肇州县| 平顺县| 宝鸡市| 临清市| 玉屏| 甘谷县| 云和县| 巴楚县| 田林县|