Я хочу разобрать:
'APPLE BANANA FOO TEST BAR'
в:
[['APPLE BANANA'], 'FOO', ['TEST BAR']]
Вот моя последняя попытка:
to_parse = 'APPLE BANANA FOO TEST BAR'
words = Word(alphas)
foo = Keyword("FOO")
parser = Group(ZeroOrMore(words + ~foo)) + foo + Group(ZeroOrMore(words))
result = parser.parseString(to_parse)
Но она вернет следующую ошибку:
> raise ParseException(instring, loc, self.errmsg, self)
E pyparsing.ParseException: Expected "FOO" (at char 6), (line:1, col:7)
Я думаю, что проблема исходит от ZeroOrMore(words + ~foo))
, который "слишком жадный". Согласно нескольким вопросам о SO, решение состоит в том, чтобы использовать это отрицание с ~foo
, но в этом случае оно не работает. Любая помощь будет оценена