0

如果"Who acted as (?P<role>.*) in (?P<movie>.*)"是我想要匹配查询的模板,例如"Who acted as tony montana in Scarface".

如果角色名称在此处带有“in”或电影名称带有“in”,则正则表达式匹配将出错。

例如:"Who acted as k in men in black" will give "k in men" as role.

可能是一种非贪婪的方法将适用于此查询,但如果电影包含“in”一词,它会折腾。我如何在这里获得所有可能的解释?

4

1 回答 1

0

给定这样的短语'a in b in c in d'将按单词生成所有可能的分区in

words = phrase.split()

for n, w in enumerate(words):
    if w == 'in':
        print '(%s) in (%s) ' % (
            ' '.join(words[:n]),
            ' '.join(words[n+1:]))

对于您的具体问题,如果短语中有三个ins,则“中间”解释 ( (a in b) in (c in d)) 很可能是正确的,但是如果有两个ins,则无法通过文本操作来解决此问题,因为“左”和“正确的”分区是同样可能的,考虑:

Who acted as jeebs in men in black
Who acted as woman in red in matrix

您必须使用 NLP 或数据库驱动的方法来正确解析它。

于 2014-11-25T13:14:27.753 回答