In [127]: import re
...:
...: def findall(SearchKey,Sentence):
...: rtn=[[m.group(),m.start(),m.end()] for m in re.finditer(SearchKey,Sentence)]
...: return rtn
In [128]: res2="abc aa bb ddd dhfksa kdafja kdasfjal qoqrfj"
In [123]: a=findall('(\w)\1+',res2)
In [124]: a
Out[124]: []
In [125]: a=findall(r'(\w)\1+',res2)
In [126]: a
Out[126]: [['aa', 4, 6], ['bb', 7, 9], ['ddd', 10, 13]]
\1은 앞에서 그룹화 했던 부분과 완전히 동일한 것을 말한다.
단순히 \w{2,} 와 같이 하면 동일 문자 반복이 아닌 문자 반복이 된다.
따라서 aa bb와 같이 앞에 나온 것과 동일한 문자를 반복할 때는 그룹화를 시켜준 다음 \1 \2와 같이 그룹의 번호를 사용하면 된다.
r' '와 같이 raw string을 사용하는 것이 편리하다.
'Python > string' 카테고리의 다른 글
| format string (0) | 2019.12.27 |
|---|---|
| binary, utf-8, utf-16 (0) | 2019.12.27 |
| append, pop, sort, reverse (0) | 2019.12.27 |
| encode, decode (0) | 2019.12.26 |
| ascii, hex, unicode (0) | 2019.12.26 |