0

蟒蛇/pyparsing

当我使用 scanString 方法时,它会在文本中给出匹配标记的开始和结束位置。

例如

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

我得到以下信息:

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

但是猫结束位置应该是“2”吧?为什么将下一个位置报告为结束位置?

4

1 回答 1

1

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

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

如果您查看 pyparsing 源代码以实现transformString.

于 2009-12-04T13:17:51.873 回答