2

碰到一个有点奇怪的问题......我想把字符串:

一个\左(b_{d}\右)

进入

一个 \left( b_{d} \right)

在 Scite 中使用 Lua 脚本。

因此,我为 Scite 制作了以下 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

1 回答 1

5

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) 

所以,当我尝试它时,这对我有用,当你尝试时你得到了什么作为匹配 %

于 2010-03-25T19:50:08.823 回答