找3个字母的单词

时间:2016-06-09 13:55:52

标签: python

我在Python中有以下代码:

import re
string = "what are you doing you i just said hello guys"
regexValue = re.compile(r'(\s\w\w\w\s)')
mo = regexValue.findall(string)

我的目标是找到任何3个字母的单词,但出于某种原因,我似乎只是在我的列表中得到“是”而不是“你”。我想这可能是因为两者之间的空间重叠,并且因为空间已经被使用,所以它不能成为“你”的一部分。那么,我怎么才能从这样的字符串中找到三个字母单词?

3 个答案:

答案 0 :(得分:8)

这不是正则表达式,但你可以这样做:

words = [word for word in string.split() if len(word) == 3]

答案 1 :(得分:6)

如果您严格要使用正则表达式,则应使用单词边界(\b\w{3}\b),否则,Morgan Thrapp建议的答案就足够了。

Demo

答案 2 :(得分:1)

findall找到不重叠的匹配项。一个简单的解决方法是将最终\s更改为前瞻; (?=\s)但您可能还想扩展正则表达式以应对初始和最终匹配。

regexValue = re.compile(r'((?:^\s)\w\w\w(?: $|(?=\s))')

如果这不是正则表达式练习,那么在空格上拆分字符串非常简单。