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

How to match for optional pattern in Lua?

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

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

以此为例,我希望 + 是可选的,并且当 + 不存在于该字符串中时仍然 return 数字的索引。

我试过这个模式,但它会 returns nil, nil, nil

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

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

您需要将 ? 移动到捕获中!

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