我有一个单词列表,例如:
l = """abc
dfg
hij
jih
gfd
cba
cbd
jip
gfe
jiw
cbw"""
我想从这个列表中找到成对的单词,所以第一个单词是:
.(.)(.)
第二个词是:
\2\1.
所以 \1 和 \2 指的是第一个单词中的字符。
我能想到的最好的正则表达式是:
re.findall('(^.(?P<A>.)(?P<B>.)$)(?=.*(^(?P=B)(?P=A).$))', l, re.DOTALL | re.MULTILINE)
但是这个搜索只返回一些对(因为 findall 只返回不重叠的结果......)。然后我想到了使用肯定的lookbehind断言,但它们只能与固定长度的字符串一起使用......
有没有办法用正则表达式做到这一点?