Skip to main content
 首页 » 编程设计

python之如何构建一个正则表达式来捕获由单个空格分隔的单词

2025年05月04日38三少

我想构建一个正则表达式来捕获

Fee fie foe foo! 

但是当有多个空格时:

Fee fie  foe foo! 

只捕获“Fee fie”

我的正则表达式看起来像这样:

words_re = re.compile(r"\w[-\w .,!]*") 

您可以看到它捕获了以字母数字开头,后跟字母数字、空格和一些选定标点符号的任意组合的任何序列。我只想一次将其限制为一个空间。

或者,返回分隔空白跨度的 string.split() 变体也适合我。

我得到的最接近的是:

words_re = re.compile(r"\w[-\w.,!]*|\s+") 
l = words_re.findall(s) 

但我随后需要在返回的列表中搜索仅包含单个空格分隔符的子列表,然后从中重建字符串。

我的一个想法是从上面的表达式中获取结果,然后用 string.split("") 进一步拆分它,将它分成由两个空格分隔的子组,但是那么三个空格的情况等等呢?

请您参考如下方法:

这会起作用

^(\w+(?:\s[-.!\w]+)*(?:[-.!\w]*$)) 

Regex Demo

如果你只想匹配一个空格字符串,你可以使用(这只会从头开始匹配。如果你想捕获所有可能性,你可以删除 anchor )

^(\w[-.!\w]*(?:\s[-.!\w]+)*) 

Regex Demo