如何在 Lua 中匹配可选模式?

我正在尝试学习如何在Lua中匹配可选模式。

local text = '10+'
local start_index, end_index, value = string.find(text, "%d+(%+)")
print(start_index, end_index, value)

以这个为例,我希望 + 是可选的,即使在字符串中不存在 + 也仍然返回数字的索引。

我尝试了这个模式但它会返回 nil, nil, nil

local text = '10+'
local start_index, end_index, value = string.find(text, "%d+(%+)?")
print(start_index, end_index, value)

在这种情况下,我该如何正确地使 + 可选?

点赞
用户2858170
用户2858170

你需要把 ? 移到捕获括号里面!

local text = '10+'
local start_index, end_index, value = string.find(text, "%d+(%+?)")
print(start_index, end_index, value)
2021-05-17 08:17:42