我有类似的字符串
abcdef
abcd|(
abcde|(foo
abcd|)
abcde|)foo
应修改为
abcdef
abcd
abcde \foo
abcd
abcde \foo
|
,则什么也不做|(
或|)
之后没有任何内容,则删除这两个字符|(
替换|)
或<space>\
如果可能的话,我对短模式表达式感兴趣。我可以通过几个string.find
和string.sub
来做到这一点,但是我有很多 if
条语句。
答案 0 :(得分:1)
您可以使用
function repl(v)
res, _ = string.gsub(v:gsub('|[()]$', ''), '|[()]', ' \\')
return res
end
详细信息
'|[()]$'
匹配|
,然后匹配字符串末尾的(
或)
,并且string.gsub
将这些出现的位置替换为空字符串|[()]
然后匹配|
,然后匹配字符串中的(
或)
任意位置,并且string.gsub
替换这些出现的位置带有空格和\
。