pythonRegex(5)--findall、finditer方法

來源:互聯網
上載者:User

標籤:color   nbsp   end   cab   分組   使用   特殊   其他   string   

findall方法

相比其他方法,findall方法有些特殊。它的作用是尋找字串中所有能匹配的字串,並以結果存於列表中,然後返回該列表

注意: match 和 search 是匹配一次 findall 匹配所有。

1 pattern.findall方法

該方法的作用是在string[pos, endpos]區間從pos下標處開始尋找所有滿足pattern的子串, 直到endpos位置結束,並以列表的形式返回尋找的結果,如果未找到則返回一個空列表。

文法格式:

pattern.findall(string[, pos[, endpos]])

2 re.findall

擷取字串中所有能匹配的字串,並以列表的形式返回。

文法格式:

re.findall(pattern, string, flags=0)

3 當pattern有括弧(分組)時,列表中的字串只是圓括弧中的內容,不是整個Regex所匹配的內容  (1)當Regex中含有多個圓括弧()時

  返回列表中的元素由所有滿足匹配的內容組成,但是每個元素都是由運算式中所有圓括弧匹配的內容組成的元組

  >>> re.findall(r‘a(b)(c)‘,‘abcabc‘)

  [(‘b‘, ‘c‘), (‘b‘, ‘c‘)]

  (2)當Regex中只帶有一個圓括弧時

  返回的列表的元素由所有能成功匹配運算式中圓括

  號匹配的內容組成,並且該列表中的元素都是字串

  >>> re.findall(r‘a(b)c‘,‘abcabc‘)

  [‘b‘, ‘b‘]

  (3)當Regex中沒有圓括弧時

  返回列表中的元素由所有能成功匹配的子串組成。

  >>> re.findall(r‘abc‘,‘abcabc‘)

  [‘abc‘, ‘abc‘]

 

finditer方法

finditer函數跟findall函數類似,但返回的是一個迭代器, 而不是一個像findall函數那樣的存有所有結果的list。

finditer的每一個對象可以使用group(可以擷取整個匹配串)和groups方法;

在有分組的情況下,findall只能獲得分組,不能獲得整個匹配串。

>>> re.findall(r‘a(b)(c)‘,‘abcd 12abcde‘)

[(‘b‘, ‘c‘), (‘b‘, ‘c‘)]

>>> a = re.finditer(r‘a(b)(c)‘,‘abcd 12abcde‘)

>>> for i in a :

... print i.group()

...

abc

abc

>>> a = re.finditer(r‘a(b)(c)‘,‘abcd 12abcde‘)

>>> for i in a:

... print i.groups()

...

(‘b‘, ‘c‘)

(‘b‘, ‘c‘)

pythonRegex(5)--findall、finditer方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.