2014-11-25 42 views
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.

可以是非貪婪的方法將這個查詢工作,但它會去折騰,如果影片包含「中」字。 如何在這裏獲得所有可能的解釋?

+1

'在(?P 。*)中扮演(?P 。*?)''的作品適合您的輸入。 – 2014-11-25 11:48:21

+1

這不是一個正則表達式寫作服務;請自行修改:http://regex101.com/r/uD0yR9/1 – jonrsharpe 2014-11-25 11:48:27

+4

呃,正式地說,「紅色女性在電梯中扮演男人」有三種可能的解釋。我不認爲這隻能用正則表達式解決。 – georg 2014-11-25 11:52:53

回答

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:])) 

爲了您的具體問題,如果有三個in S IN語,「中間」解釋((a in b) in (c in d))將很可能是正確的,但有兩個in s沒有辦法通過文本操作的方式來解決此問題,因爲「左」和「右」分區是同等可能的,請考慮:

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

您必須使用NLP或數據庫驅動的方法來正確解析。

相關問題