Scite Lua - выход из правой скобки в регулярном выражении? - PullRequest
2 голосов
/ 25 марта 2010

Столкнулся с несколько странной проблемой ... Я хочу перевернуть строку:

а \ слева (B_ {d} \ справа)

в

a \ left (b_ {d} \ 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

Может кто-нибудь сказать мне, что будет правильным способом сделать это?

Спасибо,

Ура!

1 Ответ

4 голосов
/ 25 марта 2010

Правильный escape-символ в Lua - это%, поэтому то, что вы пробовали, должно работать, я только что попробовал

local sel = [[a\left(b_{d}\right)]]
local cln3 = string.gsub(sel, "\\left%(", " \\left( ")
local cln4 = string.gsub(cln3, "\\right%)", " \\right) ")
print (cln4)

и получил

a \left( b_{d} \right) 

Итак, это сработало для меня, когда я попробовал, что вы получили в качестве совпадения, когда вы попробовали%

...