如何去除字符串中“(”后的空格?

这里是一个 Lua 初学者。

我想将字符串 '$\\psi\\left( y\\right)$' 替换为 '$\\psi\\left(y\\right)$',即删除出现在 ( 后和下一个非空格字符之前的任何空格。

我一直在尝试使用 gsub,但每次尝试都没有成功。以下是我尝试的内容:

function foo(s)
print('before s = '..s)
str=string.gsub(s,"\\left(  ","\\left(")
print('after s= '..str)
return str
end

以及尝试

function foo(s)
print('before s = '..s)
str=string.gsub(s,"\\left(%s+","\\left(")
print('after s= '..str)
return str
end

以及其他几个变化。但每次我调用该函数,如下所示

 foo('$\\psi\\left(  y\\right)$')

返回的字符串相同。空格仍然存在。

正确的做法是什么?在 Linux 上使用 Lua 5.2.4

我想在 Lualatex 中使用此功能,并且这些字符串将作为字符串从 latex 传递到 lua。但我现在首先在独立的 Linux Lua 安装中尝试使用此函数,以查看它是否有效。

点赞
用户2858170
用户2858170

将下面翻译成中文并且保留原本的 markdown 格式

魔法字符如 ( 需要转义。

请参考 https://www.lua.org/manual/5.3/manual.html#6.4.1

"\\left(%s+" 替换为 "\\left%(%s+" 或将 "\\left( +" 替换为 "\\left%( +"

在我看来,这似乎是一个错误。如果 ( 是模式中的第一个字符,那么应该会出现 "未完成的捕获" 错误。

2021-04-01 17:25:15