我正在尝试匹配 LUA 中遵循 Word 100.00% ~(45.56, 34.76)
格式的任何字符串。因此,我希望做一个(理论上)与此接近的正则表达式:
%D%s[%d%.%d]%%(%d.%d, %d.%d)
但到目前为止我还没有运气。 LUA 的模式很奇怪。
我错过了什么?
最佳答案
您的模式很接近,您忽略了允许数字的多个实例,您可以通过使用 +
来做到这一点就像 %d+
。
您也没有使用[
, (
和.
正确地在模式中。
[
模式中的 s 将创建一组您尝试匹配的字符,例如 [abc]
意味着您正在寻找匹配任何 a
b
或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。
关于lua - 在 LUA 中进行模式匹配时,如何将单词与数字组合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57548583/