Python 为什么使用dblQuotedString会更改匹配位置?

Python 为什么使用dblQuotedString会更改匹配位置?,python,pyparsing,Python,Pyparsing,我有以下python程序: from pyparsing import * #grammar START string_list_item = dblQuotedString | Word(printables.replace(')', '')) cmake_list_content = OneOrMore(string_list_item) variable_name = Word(alphas+"_", alphanums+"_") set_ke

我有以下python程序:

from pyparsing import *

#grammar START
string_list_item = dblQuotedString | Word(printables.replace(')', ''))
cmake_list_content = OneOrMore(string_list_item)

variable_name = Word(alphas+"_", alphanums+"_")

set_keyword = CaselessLiteral("set")

set_normal_variable_stmt = set_keyword + "(" \
    + variable_name \
        + cmake_list_content + ")" 
#grammar END

cmake_source = "set(TabsPls_Sources Main.cpp)"

string_list_item.setDebug()

set_normal_variable_stmt.parseString(cmake_source)
这将为“Main.cpp”提供以下输出:

Match {string enclosed in double quotes | W:(0123...)} at loc 19(1,20)
Matched {string enclosed in double quotes | W:(0123...)} -> ['Main.cpp']
但是当我从第一行删除dblQuotedString时:

Match W:(0123...) at loc 20(1,21)
Matched W:(0123...) -> ['Main.cpp']

为什么会这样?输入中没有任何双引号字符串,那么为什么匹配位置会改变?

我自己结束这个问题,因为这是由于a引起的,现在已经修复了

这个问题在PyHub repo的第244号问题中得到了解决:我投票结束这个问题,因为根本的问题是一个库bug,它是作为库问题在外部解决的。