How to string.find the square bracket character in

2020-06-16 03:21发布

So I'm trying to find square brackets inside a string:

s = "testing [something] something else"
x,y = string.find(s,"[")

which gives me an error: malformed pattern (missing ']').

I also tried:

x,y = string.find(s,"\[")

giving me the same error.

And this:

x,y = string.find(s,"\\[")

in this case x and y are nil.

Any thoughts on how to do this properly? Thanks in advance.

2条回答
时光不老,我们不散
2楼-- · 2020-06-16 04:14

John's answer will work -- turning off pattern matching.

What you're trying to do -- escape the [ -- is done with the % character in Lua:

 x,y = string.find(s,'%[')

Also strings in Lua all have the string module as their metatable, so you could just say:

 x,y = s:find('%[')

or even:

 x,y = s:find'%['
查看更多
再贱就再见
3楼-- · 2020-06-16 04:14

Use the fourth argument to string.find, which turns off pattern-matching.

x, y = string.find(s, "[", nil, true)
查看更多
登录 后发表回答