1. 程式人生 > >python3 re模組findall和finditer

python3 re模組findall和finditer

import re
S = "abcdddeeeeaabbbcd"
pattern = re.compile(r'(\w)\1')
res = pattern.findall(S)
result = [[r.start(), r.end() - 1] for r in re.finditer(r'(\w)\1{2,}', S)]
test = re.finditer(r'(\w)\1{1,}',S)
for i in test:
  print(i)

(\w) 匹配字母分組,當有分組時,\1是重複第一個分組,因此 r’(\w) \1’代表匹配兩個連續相同字母如dd,在findall中只返回分組中的內容,即[‘d’,‘e’,‘e’,‘a’,‘b’]
但是在finditer中可以返回匹配中的正則表示式內容

<_sre.SRE_Match object; span=(3, 6), match='ddd'>
<_sre.SRE_Match object; span=(6, 10), match='eeee'>
<_sre.SRE_Match object; span=(10, 12), match='aa'>
<_sre.SRE_Match object; span=(12, 15), match='bbb'>