【发布时间】:2018-02-03 16:09:50
【问题描述】:
我正在为 Lua 编写命令行解析器,我想使用 Lua string.match() 提取选项的名称及其值。
命令行选项定义为:--name=value
这是我使用的代码(可以找到here):
local expr = '--username=John'
local name, value = expr:match( '^%-%-(.*)=%"?(.*)%"?' )
print( "found values for '" .. expr .. "'" )
print( name .. " = " .. value )
输出正常:
found values for '--username=John'
username = John
但如果我想设置一个带空格的值,我将它括在双引号之间
local expr = '--username="John Doe"'
local name, value = expr:match( '^%-%-(.*)=%"?(.*)%"?' )
print( "found values for '" .. expr .. "'" )
print( name .. " = " .. **value )
输出不是我想要的,因为 string.match()
提取了最后一个双引号found values for '--username="John Doe"'
username = John Doe"
是我的模式错误还是 Lua 错误?
【问题讨论】: