ある教科書で、「教師は教師」みたいに同じ単語が助詞を挟んで繰り返される表現を、正規表現でみつけてこいという課題がありました。
それで、試しにですが、
test = '教師は教師、生徒も生徒、女の子は女の子、俺は天才'
という文字列を用意して、
re.findall(r'(.+).\1', test)
と書いてみると、
>>> test = '教師は教師、生徒も生徒、女の子は女の子、俺は天才'
>>> re.findall(r'(.+).\1', test)
['教師', '生徒', '女の子']
という実行結果になりました。
後方参照だと()の部分しか抜き出されないようで、これを「教師は教師」の形で出力するのはどうすればいいでしょうか?
re.finditer()を使って、以下のようにしたら一応それっぽいものができました。
>>> test = '教師は教師、生徒も生徒、女の子は女の子、俺は天才'
>>> results_itr = re.finditer(r'(.+).\1', test)
>>> for result in results_itr:
... print(result.group())
...
教師は教師
生徒も生徒
女の子は女の子
>>>