我想替换花括号,它是在something in here {uid} {uid2}
到something in here :id :id
之内的词。
我尝试了以下操作:
local v = "something in here {uid} {uid2}"
local regex = "^{([^}]+)}"
print(v:gsub(v:match(regex), ":id"):gsub("{", ""):gsub("}", ""))
但是它不起作用。但是,当我删除“这里的东西”时,它确实起作用。请帮忙。
答案 0 :(得分:5)
要替换花括号内的所有子字符串(其中不包含任何其他花括号),可以使用
v:gsub("{[^{}]*}", ":id")
请参见Lua demo:
local v = "something in here {uid} {uid2}"
res, _ = v:gsub("{([^{}]*)}", ":id")
print(res)
-- something in here :id :id
{[^{}]*}
模式匹配{
,然后匹配{
和}
以外的0个或更多字符,然后匹配}
。
替代解决方案
{.-}
将匹配{
,然后匹配尽可能少的0个字符(-
是一个惰性量词),然后匹配一个}
字符(请参阅{{ 3}})v:gsub("%b{}", ":id")
(请参阅this demo),%b{}
将匹配嵌套花括号内的子字符串。