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