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

考虑在 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](http://www.lua.org/pil/20.2.html),但如果您有任何指针,那将是好的。

点赞
用户2423164
用户2423164

你的第一个模式的意思是“1,然后是破折号,再后面跟着4个数字”。第二个模式相同,但后面是一个破折号。由于在四个数字之后你有一个数字(1-12345-a.b.c),而不是一个破折号,所以匹配失败了。

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

"1%-(%d%d%d%d%d)%-"
2015-11-27 20:14:13