5

フレーズを探して、それに続くいくつかの単語に一致するようにしますが、別の特定のフレーズを見つけた場合は早期に停止します。

たとえば、「going to the」に続く単語を 3 つまで一致させたいのですが、「to try」に遭遇すると、一致プロセスを停止します。たとえば、「ルナ パークに行く」は「ルナ パーク」になります。「going to the capital city of Peru」は「capital city of」になり、「go to the moon to try some Cheesecake」は「moon」になります。

単一の単純な正規表現 (できれば Python) で実行できますか? 考えられるすべての組み合わせを試しましたが、惨めに失敗しました:)。

4

2 に答える 2

5

これは、to try ( )が後に続かない限り、最大 3 つの ( {1,3}) 単語に一致します。going to the(?!to try)

import re
infile = open("input", "r")
for line in infile:
    m = re.match("going to the ((?:\w+\s*(?!to try)){1,3})", line)
    if m:
        print m.group(1).rstrip()

出力

luna park
capital city of
moon
于 2013-03-22T07:46:45.883 に答える
-2

文章から固有名詞を抽出する方法を探していると思います。適切なアプローチについては、NLTK を参照する必要があります。正規表現は、限定されたコンテキスト フリー グラマーにのみ役立ちます。一方で、(コンピューターにとって)自明ではない人間の言語を解析する能力を求めているようです。

于 2013-03-22T07:28:07.590 に答える