Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to string.find the square bracket character in lua?

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.

like image 447
Marcelo Machado Avatar asked May 20 '11 20:05

Marcelo Machado


2 Answers

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

x, y = string.find(s, "[", nil, true)
like image 125
John Calsbeek Avatar answered Nov 15 '22 17:11

John Calsbeek


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'%['
like image 39
Mud Avatar answered Nov 15 '22 16:11

Mud