我有这样的字符串
abcdef
abcd|(
abcde|(foo
abcd|)
abcde|)foo
应修改为
abcdef
abcd
abcde foo
abcd
abcde foo
- 如果没有
|
则什么都不做 - 如果
|(
或|)
后面没有任何内容,则删除这两个字符 - 如果接下来有内容,请将
|(
或|)
替换为<space>
如果可能的话,我对简短的模式表达式感兴趣。我可以通过几个string.find
和string.sub
来做到这一点,但是我有很多if
陈述。
您可以使用
function repl(v)
res, _ = string.gsub(v:gsub('|[()]$', ''), '|[()]', ' \')
return res
end
在线观看 Lua 演示
详
'|[()]$'
匹配字符串末尾的|
,然后(
或)
,string.gsub
用空字符串替换这些匹配项- 然后,
|[()]
匹配|
,然后在字符串中的任何位置匹配(
或)
,string.gsub
用空格和替换这些匹配项。