理解为什么某些 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)%-"
考虑在 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)%-"