2010-03-25 45 views
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 

有誰能告訴我什麼是正確的方法來做到這一點?

謝謝,

乾杯!

回答

4

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) 

所以,這個工作對我來說,當我試了一下,當您嘗試時,您獲得了什麼樣的匹配結果%

+0

Hi Fraser, 非常感謝您的快速響應! 用%作爲轉義,在我的第一次嘗試中,它根本不匹配(即cln4 /「right」部分根本沒有間隔)。在你寫完之後,我又試了一次,然後它產生了一個錯誤。然後我終於決定重新啓動Scite,然後它開始工作:) ... – sdaau 2010-03-25 20:11:01

+0

...事情是,我已經在Scite屬性中設置了選項ext.lua.auto.reload = 1,以便每當lua腳本被改變+保存,它「重新加載」而不必重新啓動Scite。它在很大程度上爲我工作,但顯然它在我第一次非轉義的「\\ right」嘗試期間發生了錯誤,然後繼續發生錯誤,即使我使用%來轉義。任何情況下,都很樂意擁有它解決了。 而且僅作參考,不需要一個新的變量在那裏,也可以不喜歡它:... – sdaau 2010-03-25 20:12:42

+0

... 功能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