scanString结束位置:为什么它是END_INDEX + 1?
-
11-09-2019 - |
题
蟒/ 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源代码,看看这个被使用。
不隶属于 StackOverflow