在关键字和预定数量的空格之前抓取所有内容

时间:2017-05-03 00:48:54

标签: python regex

假设我有两个陈述:

Greg Wylde hits the penalty kick with his left foot to the lower left corner and scores!!

Robin van Persie powers the penalty kick with his right foot to the upper right corner and scores!!

我想抓住

Greg Wylde

Robin van Persie

我唯一可以保证的是,每个句子在句子中都有penalty kick,然后在那之前有两个单词(hits theplaces theshoots the等等)。

基本上句子总是采用这种形式:

Name (can be n amount of words) someWord someWord penalty kick

我如何编写正则表达式来取出名称。

目前我有一些基本的内容

 [^ ]* [^ ]* [^ ]*(?<=penalty)

让我到了名字后面的最后一个空格,但是我怎么告诉它在那之前抓住一切?我确信它非常简单,但我完全错过了它。

谢谢!

3 个答案:

答案 0 :(得分:1)

This正则表达式适用于我:

(\w+\s\w+)[\w\s]+penalty kick

它的工作原理是捕捉句子的前两个单词,并在“点球”之前匹配一些单词和空格的混合。

答案 1 :(得分:0)

可能不是最好的正则表达式,但它应该工作。使用Regex101

进行测试
.+?(?= [^ ]* [^ ]* [^ ]*(?<=penalty))

答案 2 :(得分:0)

你可以使用^(.*?) \w+ \w+ penalty,即:

import re
sentence = "Greg Wylde hits the penalty kick with his left foot to the lower left corner and scores!!"
result = re.findall(r"^(.*?) \w+ \w+ penalty", sentence , re.DOTALL)
print result[0]
# Greg Wylde

Python Demo

Regex Demo