奇怪的小问题

240 天前
 roker
local inputString = '[[123],[456],[789]]'
local st=(string.find(inputString,"]",-1))
上面能正常匹配。
local end=(string.find(inputString,"[",-1))
然后就报错 string = '[string "..."]:17: malformed pattern (missing ']')'
google 说需要把"["把[转义成正则表达式的[加%
local end=(string.find(inputString,"%[",-1))
然后 end 的值为 nil ,依然没有获取到,这个是怎么回事
1671 次点击
所在节点    Lua
2 条回复
body007
240 天前
看起来是 lua 语言。根据下面的描述。

string.find(目标字符串, 搜索字符串, [(init: 起始位置,默认为 1,可为负数表示从后往前), [(plain: false=简单模式,true=正则匹配,默认 false)]])

你第 3 个参数是 -1 ,那么表示从最后一个字符往后匹配,当然能匹配 ']' 无法匹配 '[' 了

试试:local st=(string.find(inputString,"%[",-6)),刚好匹配倒数第 1 个 '['
wellerman
240 天前
local end=(string.find(inputString,"%[",1))
查找索引开始位置:设为 1 就行了。

https://www.lua.org/manual/5.3/manual.html#pdf-string.find

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1037628

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX