2015-10-25 4 views
1

Я пытаюсь использовать re.findall, чтобы найти все наборы двух букв, следующих друг за другом в тексте (буквы bigrams). Как получить регулярное выражение, чтобы не использовать последнюю букву ранее найденного bigram, чтобы его можно было использовать снова в следующем?Нахождение письма bigrams в тексте с использованием регулярного выражения Python

Ниже не работает, так как регулярное выражение потребляет:

>>> re.findall(r'[a-zA-z]{2}', 'find bigrams here') 
['fi', 'nd', 'bi', 'gr', 'am', 'he', 're'] 

Используя положительный предпросмотр был второй попыткой. Он не использует вторую букву предыдущей биграммы, но не поймать его либо ...

>>> re.findall(r'([a-zA-z](?=[a-zA-Z]))', 'find bigrams here') 
['f', 'i', 'n', 'b', 'i', 'g', 'r', 'a', 'm', 'h', 'e', 'r'] 

Спасибо за любую помощь.

ответ

1
import re 
print re.findall(r'(?=([a-zA-Z]{2}))', 'find bigrams here') 

Выход: ['fi', 'in', 'nd', 'bi', 'ig', 'gr', 'ra', 'am', 'ms', 'he', 'er', 're']

Угадайте вам нужно это

+1

Спасибо большое !! (Конечно, для Python 3.x это будет 'print (...)', т. Е. С круглыми скобками) – Ingrid

Смежные вопросы