理解为什么某些 Lua 模式失败的问题

Problems understanding why certain Lua pattern fails

考虑在 lua cli 上完成的以下测试:

Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> line = "Conference 1-12345-a.b.c (1 member rate: 32000 flags: running|answered|enforce_min|dynamic|exit_sound|enter_sound)"

我正在尝试从 Conference 1-12345-a.b.c

中提取 12345

这个有效:

> searchtextok = "1%-(%d%d%d%d)"
> print(string.match(line, searchtextok));
1234

但这失败了:

> searchtextok = "1%-(%d%d%d%d)%-"
> print(string.match(line, searchtextok));
nil

但我不明白为什么。我目前正在阅读 this,但如果您有任何指示,那就太好了。

您的第一个模式的意思是 “1,然后是破折号,然后是 4 位数字”。第二个是相同的,但后跟一个 破折号 。因为在四位数字之后你还有另一个数字(1-12345-a.b.c ) 而不是 破折号,匹配失败。


您可能想要匹配 5 个数字,而不是 4 个数字。只需将其更改为:

"1%-(%d%d%d%d%d)%-"