Python 当第一个单词完全匹配时返回完整句子

Python 当第一个单词完全匹配时返回完整句子,python,regex,Python,Regex,我试图仅在第一个单词与所需单词匹配时返回全文。 在这个例子中,我的词是“斯巴达” 我正在用python编写,直到现在: text = "sparta where is fire" my_regex = "^[sparta\s]+ [\w\s]+" result = re.findall(my_regex, text) 当它找到这个句子时,效果非常好。它以列表的形式返回结果和文本。我的问题是当没有匹配项时,结果返回一个空列表。有没有一种方法,当没有比赛时,我什么也得不到。我不需要空字符串。还有什

我试图仅在第一个单词与所需单词匹配时返回全文。 在这个例子中,我的词是“斯巴达”

我正在用python编写,直到现在:

text = "sparta where is fire"
my_regex = "^[sparta\s]+ [\w\s]+"
result = re.findall(my_regex, text)

当它找到这个句子时,效果非常好。它以列表的形式返回结果和文本。我的问题是当没有匹配项时,结果返回一个空列表。有没有一种方法,当没有比赛时,我什么也得不到。我不需要空字符串。还有什么可以代替findall的吗?

我想您正在寻找
匹配功能

text=“斯巴达哪里有火”
my_regex=“^[sparta\s]+[\w\s]+”
match=re.match(我的正则表达式,文本)
match.group()#返回“斯巴达哪里有火”
match2=re.match(我的正则表达式“你好”)
匹配2#无

您的正则表达式有点不正确,至少应该是
my_regex=“^sparta\s.*”
。如果s.startswith(“斯巴达”)
,为什么不呢
re.findall
返回多个结果,您需要一个。使用
re.search
获取字符串中的第一个也是唯一一个匹配项。感谢您的回复。我的方法将有一个regex注释,当匹配时,该方法将被执行。例如@respond_to('hi',re.IGNORECASE)def hi(message):message.send('我能理解hi或hi!')没有得到任何东西和得到一个空列表有什么区别?如果不是结果,您仍然会说
@PeterWood,因为我正在按照上面所写的方式构建方法,即使有空列表,我的方法也会被执行。如果没有匹配项,我想跳过我的方法执行。我不明白。你怎么知道没有对手?您的示例没有列表。你没有道理。您希望跳过什么执行?你为什么要跳过它?如果是这样,为什么不跳过它呢?如果不想,您不必执行搜索。您的正则表达式匹配的
老鼠很聪明
,但不是
斯巴达?它在哪里?
海报没有根据他的问题询问正确的正则表达式。海报正在寻找一个答案:“当它找到句子时,效果非常好。它将结果与文本一起作为列表返回。我的问题是,当没有匹配时,结果返回一个空列表。有没有一种方法,当没有匹配时,我什么也得不到。”@Toto
text = "sparta where is fire"
my_regex = "^[sparta\s]+ [\w\s]+"
result = re.findall(my_regex, text)