使用Python正则表达式在文本中查找字母bigrams

时间:2015-10-25 08:11:18

标签: regex python-3.x

我正在尝试使用re.findall在文本(字母双字母)中找到彼此相继的所有两个字母的集合。如何让正则表达式不要使用先前找到的二元组的最后一个字母,以便它可以在下面再次使用?

正如正则表达式消耗的那样,以下方法无效:

>>> 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 个答案:

答案 0 :(得分: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']

猜猜你需要这个