у меня есть список слов, таких как:Использование Regex чтобы найти пары слов из списка слов
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, но их можно использовать только со строками фиксированной длины ...
Есть ли способ для этого с регулярным выражением?
Можете ли вы объяснить взаимосвязь между парами слов в словах, а не только с примером? Я думаю, вы, возможно, потеряли определенную точность. Являются ли слова всегда ровно 3 буквы длинными, как показано на рисунке? –
В ваших данных образца 'abc' может быть сопряжен с' cba', 'cbd' или' cbw'. У вас есть предпочтения? Или вы хотите получить все из них? –
@Alan: Очевидно, он хочет получить все из них, иначе подход с регулярным выражением будет работать. –