2
撞上了一個有些奇怪的問題......我想將字符串:Scite Lua - 在正則表達式中轉義右括號?
一個\左(B_ {d} \右)
到
一個\左(B_ {d} \ right)
in Scite使用Lua腳本。
所以,我爲賽特以下的Lua腳本:
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
有誰能告訴我什麼是正確的方法來做到這一點?
謝謝,
乾杯!
Hi Fraser, 非常感謝您的快速響應! 用%作爲轉義,在我的第一次嘗試中,它根本不匹配(即cln4 /「right」部分根本沒有間隔)。在你寫完之後,我又試了一次,然後它產生了一個錯誤。然後我終於決定重新啓動Scite,然後它開始工作:) ... – sdaau 2010-03-25 20:11:01
...事情是,我已經在Scite屬性中設置了選項ext.lua.auto.reload = 1,以便每當lua腳本被改變+保存,它「重新加載」而不必重新啓動Scite。它在很大程度上爲我工作,但顯然它在我第一次非轉義的「\\ right」嘗試期間發生了錯誤,然後繼續發生錯誤,即使我使用%來轉義。任何情況下,都很樂意擁有它解決了。 而且僅作參考,不需要一個新的變量在那裏,也可以不喜歡它:... – sdaau 2010-03-25 20:12:42
... 功能SpaceTexEquations() 編輯:BeginUndoAction() 本地SEL =編輯:GetSelText()clnd = sel clnd = string.gsub(clnd,「\\ left%(」,「\\ left(」) clnd = string.gsub(clnd,「\\ right%)」,「\\右)「) 編輯:ReplaceSel(CLND) 編輯:EndUndoAction() 結束 所以,似乎是賽特刷新/重載的Lua腳本問題.. 再次感謝 - 歡呼! – sdaau 2010-03-25 20:14:11