次のような単語のリストがあります。
l = """abc
dfg
hij
jih
gfd
cba
cbd
jip
gfe
jiw
cbw"""
このリストから単語のペアを見つけたいので、最初の単語は次のとおりです。
.(.)(.)
そして、2 番目の単語は次のとおりです。
\2\1.
したがって、\1 と \2 は最初の単語の文字を参照します。
私が思いつくことができる最高の正規表現は次のとおりです。
re.findall('(^.(?P<A>.)(?P<B>.)$)(?=.*(^(?P=B)(?P=A).$))', l, re.DOTALL | re.MULTILINE)
ただし、この検索では一部のペアしか返されません (findall は重複しない結果のみを返すため...)。次に、肯定的な後読みアサーションを使用することを考えましたが、固定長の文字列でしか使用できません...
正規表現でこれを行う方法はありますか?