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

我有以下 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']

为什么会发生这种情况?输入中没有任何双引号字符串,那么为什么匹配位置会发生变化?


30秒到达战场
浏览 108回答 0
0回答

倚天杖

我自己关闭这个问题,因为这是由于错误 #244造成的,该错误现已修复!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python