蟒/ pyparsing

当我使用scanString方法,它是给匹配的令牌的开始和结束位置,在文本中。

e.g。

line = "cat bat"
pat = Word(alphas)
for i in pat.scanString(line):
    print i

我得到以下:

((['cat'], {}), 0, 3)
((['bat'], {}), 4, 7)

但是猫端位置应该是“2”正确?为什么它是报告的下一个位置作为结束位置?

有帮助吗?

解决方案

这是与Python的[begin:end]切片惯例,这里的“结束”是下一个字符的索引一致的。通过将端部作为下一个位置,这是非常简单的使用所返回的值来提取匹配子串:

for t,start,end in pat.scanString(line):
    print line[start:end]

您可以看到,如果你在transformString的实施pyparsing源代码,看看这个被使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top