我有一个字符串由至少4个空格分隔的单词组成。每一个字之间都可以有不止一个空格。
我需要用Python写一个函数(可能是一个正则表达式就足够了),它可以获取字符串的开头,不包括最后三个单词。
例如:
1) input_string = "word1 word2 word3 word4" => return 'word1'
2) input_string = "word1 word2 word3 word4 word5" => return 'word1 word2'
(with only a space between word1 and word2)
3) input_string = "word1 word2 word3 word4 word5" => return 'word1 word2'
(with 3 spaces between word1 and word2 as in the input_string)
我尝试使用以下代码:
def func(input_string):
input_string = " ".join(input_string.split())
l = len(input_string)
start_string = input_string[0]
if l > 4:
i = 1
start_string += ' '
while i < l - 3:
start_string += input_string[i]
i += 1
if i == l - 3:
break
else:
start_string += ' '
return start_string
我的代码适用于示例1和2,但不适用于示例3,其中word1
和word2
之间存在3个空格。在这种情况下,我的函数返回"word1 word2"
,在word1
和word2
之间只有一个空格。
谁能给予给我一个合适的正则表达式来达到我的目标?
4条答案
按热度按时间u3r8eeie1#
也可以使用re.split()和slicing。
4jb9z9bj2#
你可以使用regex。
你可以提取所有的单词,然后创建一个正则表达式,最后n个单词和任意数量的空格在它们之前,之间和之后,然后得到正则表达式结果之前的字符串
ve7v8dk23#
使用正则表达式匹配最后3个单词。
\s+
匹配空白字符序列,\w+
匹配字母数字字符序列。{3}
匹配这些组中的3个,$
匹配字符串的结尾。tvokkenx4#
最可靠的方法是使用
(\S+\s+\S+\s+\S+)$
,如