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

首頁 > 編程 > Python > 正文

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

2020-01-04 15:24:42
字體:
來源:轉載
供稿:網友

在寫正則表達式的時候總會遇到不少的問題, 特別是在表達式有多個元組的時候。下面看下re模塊下的python/285712.html">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特有的,這是 正則 所特有的 , 任何一門高級語言使用正則都滿足這個特點:有括號時只能匹配到括號中的內容,沒有括號【相當于在最外層增加了一個括號】。在正則里面 “()” 代表的是分組的意思,一個括號代表一個分組,你只能匹配到"()"中的內容


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临汾市| 宁阳县| 朝阳县| 卓资县| 海原县| 喀喇沁旗| 汨罗市| 潮州市| 定南县| 五河县| 利川市| 五峰| 临泽县| 泰宁县| 泸水县| 佳木斯市| 荆门市| 阆中市| 延吉市| 镇原县| 九龙城区| 沂水县| 巴南区| 三明市| 龙江县| 玉龙| 景洪市| 天峨县| 高要市| 林芝县| 河北省| 鱼台县| 华安县| 定安县| 辽宁省| 台湾省| 岐山县| 邹平县| 手游| 黄石市| 嫩江县|