找出3个字母的单词

2024-05-04 07:52:15 发布

您现在位置: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)

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


Tags: 代码importreyouhellostring字母空间
3条回答

但你不能这样做:

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

findall查找不重叠的匹配项。一个简单的修复方法是将final \s改为lookahead;(?=\s),但您可能还需要扩展regex来处理初始和最终匹配。在

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

如果这不是一个regex练习,那么在空格上拆分字符串是非常简单的。在

您应该使用单词boundary(\b\w{3}\b)如果您不想使用regex,那么Morgan Thrapp建议的答案就足够了。在

Demo

相关问题 更多 >