врезались в несколько странной проблемой ... Я хочу, чтобы включить строку:Scite Lua - экранирование правой скобки в регулярном выражении?
а \ левый (B_ {d} \ справа)
в
а \ слева (b_ {д} \ right)
в Scite с использованием сценария Lua.
Итак, я сделал следующий Lua скрипт для Scite:
function SpaceTexEquations()
editor:BeginUndoAction()
local sel = editor:GetSelText()
local cln3 = string.gsub(sel, "\\left(", " \\left(")
local cln4 = string.gsub(cln3, "\\right)", " \\right) ")
editor:ReplaceSel(cln4)
editor:EndUndoAction()
end
cln3 линия работает нормально, однако, cln4 аварий с:
/home/user/sciteLuaFunctions.lua:49: invalid pattern capture
>Lua: error occurred while processing command
Я думаю, что это потому что символы скобок() являются зарезервированными символами в Lua; но тогда, как получилось, что линия cln3 работает, не убегая? Кстати, я также пробовал:
-- using backslash \ as escape char:
local cln4 = string.gsub(cln3, "\\right\)", " \\right) ") -- crashes all the same
-- using percentage sign % as escape chare
local cln4 = string.gsub(cln3, "\\right%)", " \\right) ") -- does not crash, but does not match either
Может ли кто-нибудь сказать мне, что было бы правильным путем?
Thanks,
Cheers!
Hi Fraser, Большое спасибо за быстрый ответ! С% as escape в моей первой попытке он совсем не совпадал (т. Е. Часть cln4/"right" не была разнесена). После того, как вы написали, я попробовал еще раз, а затем он сгенерировал ошибку. И затем я, наконец, решил перезапустить Scite, а затем начал работать :) ... – sdaau
... Дело в том, что я установил опцию ext.lua.auto.reload = 1 в свойствах Scite, так что всякий раз, когда a Сценарий lua изменяется + сохраняется, он перезагружается без перезапуска Scite. Это работало для меня по большей части, но, по-видимому, оно кашляло при ошибке во время моей первой неудачной попытки «\\ право», а затем продолжало генерировать ошибки, даже если я использовал% для выхода. В любом случае, рад этому решена. И только для справки, нет необходимости в новой переменной там, может также сделать это как: ... – sdaau
... функция SpaceTexEquations() редактор: BeginUndoAction() местный Сель = редактор: GetSelText() local clnd = sel clnd = string.gsub (clnd, "\\ left% (", "\\ left (") clnd = string.gsub (clnd, "\\ right%)", "\\ справа) «) редактор: ReplaceSel (clnd) редактор: EndUndoAction() конец Так, кажется, Scite обновить/перезагрузить Lua проблема сценария .. Еще раз спасибо - привет! – sdaau