Marcelo Machado
Marcelo Machado

Reputation: 1419

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.

Upvotes: 14

Views: 13139

Answers (2)

Mud
Mud

Reputation: 29021

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'%['

Upvotes: 22

John Calsbeek
John Calsbeek

Reputation: 36547

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

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

Upvotes: 8

Related Questions