scanString结束位置:为什么它是end_index + 1?

时间:2009-12-02 17:21:47

标签: pyparsing

蟒/ 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”吗?为什么报告下一个位置作为结束位置?

1 个答案:

答案 0 :(得分:1)

这与Python的[begin:end]切片约定一致,其中“end”是下一个字符的索引。通过将结尾作为下一个位置,使用返回的值提取匹配的子字符串非常简单:

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

如果查看用于实现transformString的pyparsing源代码,您可以看到如何使用它。