Lua中如何将字符串格式化以适应模式?

假设我有一个模式和一个字符串:

String ="ABCDEF"
Pattern = "%w%w%w - %w%w%w"

我该如何使 String 匹配 Pattern 的格式,使其变成 "ABC - DEF"

点赞
用户1009479
用户1009479

使用string.gsub

string.gsub("ABCDEF", "(%w%w%w)(%w%w%w)", "%1 - %2")

请注意,这将替换模式的所有出现。

2017-08-28 02:41:16
用户2328287
用户2328287
无法直接将字符串、模式和捕获一一匹配。
同一字符串可以由多个模式产生相同的捕获结果。
如果 `"%w%w%w - %w%w%w"` 是 Lua 字符串模式,那么字符串 `"ABC - DEF"` 不匹配它。
可以匹配它的模式包括 `%w%w%w %- %w%w%w`、`%w+%W+%w+`、`%w*%s*.%s*%w*` 等多个模式。
因此,我建议您定义自己需要的一小部分规则,并编写自己的函数来处理它们。
2017-08-28 06:30:43