Как заштриховать символ квадратной скобки в lua? - PullRequest
7 голосов
/ 21 мая 2011

Итак, я пытаюсь найти квадратные скобки внутри строки:

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

, которая выдает мне ошибку: неправильный шаблон (отсутствует ']').

Я тоже пробовал:

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

дает мне ту же ошибку.

А это:

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

в этом случае x и y равны нулю.

Есть мысли о том, как сделать это правильно? Заранее спасибо.

Ответы [ 2 ]

12 голосов
/ 21 мая 2011

Ответ Джона сработает - отключение сопоставления с образцом.

То, что вы пытаетесь сделать - экранирование [ - выполняется с помощью символа % в Lua:

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

Кроме того, все строки в Lua имеют метатабельный строковый модуль, так что вы можете просто сказать:

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

или даже:

 x,y = s:find'%['
4 голосов
/ 21 мая 2011

Используйте четвертый аргумент для string.find, который отключает сопоставление с образцом.

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