私はPyParserを使い慣れていませんが、動作させるにはそれを使用したいと考えています。PyParsingを使用してオプションのキーワードサフィックスをどのように一致させることができますか?
私はメッセージIは、コマンド動詞、マルチワードオブジェクトの名前を入力し、[オプションの接尾辞を持つ解析したい文字列を、いくつかの例があります。
verb object
verb another object
verb object friday
verb another object monday
動詞は固定されたリストからのものを、サフィックス(この例では曜日)もそうですが、オブジェクト名は他の単語の組み合わせでもかまいません。
これはかなり基本的なことやこれまでのところ、私は持つべきものの一種として私を打つ:これは私もしたいどのように機能していない
#!/bin/env python
from pyparsing import Word, alphas, Group, OneOrMore, oneOf, Optional
Verb = Word(alphas)
Object = Group(OneOrMore(Word(alphas)))
Suffix = oneOf('Monday Tuesday Wednesday Thursday Friday Saturday Sunday',
caseless=True)
Command = Verb + Object + Optional(Suffix)
for msg in ["verb object",
"verb another object",
"verb object friday",
"verb another object monday"]:
print(Command.parseString(msg))
サフィックスがどこにあるか、私は次の出力を取得しています
['verb', ['object']]
['verb', ['another', 'object']]
['verb', ['object', 'friday']]
['verb', ['another', 'object', 'monday']]
私が誰かが正しい方向に私をポイントしてくださいすることができ、NotAnyといくつか他のものを使用してみましたが、これまで持っていない:オブジェクトのグループに含まれていますか?
Object = Group(OneOrMore(Word(alphas) + NotAny(Suffix)))
をしかし、私は言葉の前にNotAnyを置けば、それは動作します:[OK]を
これはかなり可能ですが、OneOrMore(Word(alphas)、stopOn = Suffix)でも可能です。 stopOn引数は、あなたのために否定的な先読みを行います。しかし、彼らは事実上同じです。 – PaulMcG
ありがとう@PaulMcGuire、私は指導に感謝:) – Tom