蟒/ 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”吗?为什么报告下一个位置作为结束位置?
答案 0 :(得分:1)
这与Python的[begin:end]
切片约定一致,其中“end”是下一个字符的索引。通过将结尾作为下一个位置,使用返回的值提取匹配的子字符串非常简单:
for t,start,end in pat.scanString(line):
print line[start:end]
如果查看用于实现transformString
的pyparsing源代码,您可以看到如何使用它。