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

我正在尝试匹配任何以以下格式出现的字符串 Word 100.00% ~(45.56, 34.76) ,我想进行的正则表达式应该接近这样:

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

但我迄今为止没有成功。LUA 的模式很奇怪。

我错过了什么?

点赞
用户7396148
用户7396148

你的模式很接近,但你忽略了数字的多个实例,可以使用类似于 %d++ 进行匹配。

你还没有正确使用 [, (, .。在模式中,[ 将创建您要匹配的一组字符,例如 [abc] 表示您要在该位置匹配任何 abc( 用于定义捕获,因此在匹配事件中返回您想要的特定值,而不是整个字符串,如果要将其用作匹配的字符,则需要使用 % 进行转义。 . 将匹配任何字符,而不是具体的 .,如果你想要匹配特定的 .,需要添加 % 进行转义。

        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

2019-08-18 22:41:19