使用pyparsing提取可变长度子字符串

时间:2011-07-19 12:45:52

标签: pyparsing

我正在尝试通过pyparsing从字符串中提取由可变数量的单词组成的子字符串。

以下几乎可以正常工作但丢失了子串的最后一个字:

text = "Joe F Bloggs is the author of this book."
author = OneOrMore(Word(alphas) + ~Literal("is the"))

print author.parseString(text)

输出:

['Joe', 'F']

我错过了什么?

PS:我知道我可以使用正则表达式执行此操作,但特别希望使用pyparsing来执行此操作,因为它需要适合已使用pyparsing编写的大量工作。

1 个答案:

答案 0 :(得分:1)

你的否定前瞻必须在实际的作者词之前:

>>> author = OneOrMore(~Literal("is the") + Word(alphas))
>>> print author.parseString(text)
['Joe', 'F', 'Bloggs']