使用正则表达式捕获Python中的短语

时间:2015-03-19 20:07:40

标签: python regex

我想在Python中使用正则表达式来捕获问句中的短语,如:

  

谁创造了指环王?

而我想要抓住的只是短语" Who created"之后的短语,在这种情况下是#34;指环王"。这句话可以是任何东西,例如" Microsoft"等。我尝试使用以下python代码:

matchObj = re.match(r'Whocreated(\w+)'+re.escape('?')+r'?', query, re.I|re.X)

还有这个:

matchObj = re.match(r'Who created (\w+)'+re.escape('?')+r'?', query, re.I|re.X)

我收到以下错误:

  

追踪(最近一次通话):    文件" infobox_MQL.py",第233行,in      主要()    文件" infobox_MQL.py",第222行,在main中      print matchObj.group()   AttributeError:' NoneType'对象没有属性' group'

我可以使用硬编码来提取我想要的短语,但我只是想知道是否有一种很好的方法可以做到这一点。

提前致谢。

3 个答案:

答案 0 :(得分:1)

>>> regex = re.compile("Who created (.*?)\?", re.I)
>>> regex.search("Who created Lord of the Rings?").groups()[0]
'Lord of the Rings'

答案 1 :(得分:0)

或者你可以使用in,它应该比正则表达式更快地执行:

string = "Lord of the Rings"
if string in matchObj:
    print string

答案 2 :(得分:0)

>>> query = 'Who created Lord of the Rings?'
>>> matchobj = re.search('Lord of the Rings', query)
>>> matchobj.group()
'Lord of the Rings'