python正則表達式(5)--findall、finditer方法

findall方法

相比其餘方法,findall方法有些特殊。它的做用是查找字符串中全部能匹配的字符串,並以結果存於列表中,而後返回該列表正則表達式

注意: match 和 search 是匹配一次 findall 匹配全部。函數

1 pattern.findall方法

該方法的做用是在string[pos, endpos]區間從pos下標處開始查找全部知足pattern的子串, 直到endpos位置結束,並以列表的形式返回查找的結果,若是未找到則返回一個空列表。spa

語法格式:對象

pattern.findall(string[, pos[, endpos]])字符串

2 re.findall

獲取字符串中全部能匹配的字符串,並以列表的形式返回。string

語法格式:it

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

3 當pattern有括號(分組)時,列表中的字符串只是圓括號中的內容,不是整個正則表達式所匹配的內容

  (1)當正則表達式中含有多個圓括號()時

  返回列表中的元素由全部知足匹配的內容組成,可是每一個元素都是由表達式中全部圓括號匹配的內容組成的元組迭代器

  >>> re.findall(r'a(b)(c)','abcabc')語法

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

  (2)當正則表達式中只帶有一個圓括號時

  返回的列表的元素由全部能成功匹配表達式中圓括

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

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

  ['b', 'b']

  (3)當正則表達式中沒有圓括號時

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

  >>> 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')

相關文章
相關標籤/搜索