我在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个字母的单词,但出于某种原因,我似乎只是在我的列表中得到“是”而不是“你”。我想这可能是因为两者之间的空间重叠,并且因为空间已经被使用,所以它不能成为“你”的一部分。那么,我怎么才能从这样的字符串中找到三个字母单词?
答案 0 :(得分:8)
这不是正则表达式,但你可以这样做:
words = [word for word in string.split() if len(word) == 3]
答案 1 :(得分:6)
如果您严格要使用正则表达式,则应使用单词边界(\b\w{3}\b)
,否则,Morgan Thrapp建议的答案就足够了。
答案 2 :(得分:1)
findall
找到不重叠的匹配项。一个简单的解决方法是将最终\s
更改为前瞻; (?=\s)
但您可能还想扩展正则表达式以应对初始和最终匹配。
regexValue = re.compile(r'((?:^\s)\w\w\w(?: $|(?=\s))')
如果这不是正则表达式练习,那么在空格上拆分字符串非常简单。