我想在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'
我可以使用硬编码来提取我想要的短语,但我只是想知道是否有一种很好的方法可以做到这一点。
提前致谢。
答案 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'