我想构建一个正则表达式来捕获
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]*$))
如果你只想匹配一个空格字符串,你可以使用(这只会从头开始匹配。如果你想捕获所有可能性,你可以删除 anchor )
^(\w[-.!\w]*(?:\s[-.!\w]+)*)
