Scite Lua - 在正则表达式中如何转义右括号?

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

a\left(b_{d}\right)

变成

a \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 行没有转义就可以工作?顺便说一句,我也尝试过:

`` ` --使用反斜杠\作为转义字符: local cln4 = string.gsub(cln3, "\right)", " \ right) ")--仍然崩溃

--使用百分比符号%作为转义符 local cln4 = string.gsub(cln3, "\right%)", " \ right) ")--不崩溃,但不匹配

`` `

有人能告诉我正确的方法是什么吗?

谢谢,

干杯!

原文链接 https://stackoverflow.com/questions/2518833

点赞
stackoverflow用户236455
stackoverflow用户236455

在 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-25 19:50:08