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

时间:2015-11-27 20:07:09

标签: lua lua-patterns

考虑在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)"

我试图从12345

中提取Conference 1-12345-a.b.c

这有效:

> 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 个答案:

答案 0 :(得分:3)

你的第一个模式是“1,然后是破折号,后跟4个数字”。第二个是相同的,但后跟一个破折号。由于四位之后你有另一个数字( 1-1234 5 -abc )而不是破折号,比赛失败了。

<小时/> 你可能想匹配5而不是4位数。只需将其更改为:

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