在 LUA 中进行模式匹配时,如何将单词与数字结合起来?

How can I combine words with numbers when pattern matching in LUA?

我正在尝试匹配 LUA 中遵循格式 Word 100.00% ~(45.56, 34.76) 的任何字符串。因此,我希望做一个接近(理论上)的正则表达式:

%D%s[%d%.%d]%%(%d.%d, %d.%d)

但到目前为止我运气不好。 LUA的图案很奇怪。

我错过了什么?

你的模式很接近你忽略了允许一个数字的多个实例你可以通过在 %d+ 处使用 + 来做到这一点。

您也没有在模式中正确使用 [(.。 模式中的 [s 将创建一组您尝试匹配的字符,例如 [abc] 表示您正在寻找匹配任何 as bs 或 c 在那个位置。 ( 用于定义捕获,以便在匹配时返回您想要返回的特定值而不是整个字符串,为了将它用作匹配的字符,您需要使用 %. 将匹配任何字符,而不是特定的 . 如果你想特定地匹配 .,你需要添加一个 % 来转义。

        local str = "Word 100.00% ~(45.56, 34.76)"

        local pattern = "%w+%s%d+%.%d+%%%s~%(%d+%.%d+, %d+%.%d+%)"

        print(string.match(str, pattern))

如果输入字符串与模式匹配,您将在此处看到打印,否则您将看到 nil。

建议资源:Understanding Lua Patterns