gpt4 book ai didi

regex - Lua 正则表达式替换花括号

转载 作者:行者123 更新时间:2023-12-01 08:53:28 27 4
gpt4 key购买 nike

我想替换大括号及其内部的单词,即 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("}", ""))

但是这不起作用。然而,当我删除“这里的东西”时,它确实有效。请帮忙。

最佳答案

要替换大括号内不包含任何其他大括号内的所有子字符串,您可以使用

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+ 字符尽可能少(- 是惰性量词),并且然后是一个 } 字符(参见 this demo )
  • 如果您有均衡数量的嵌套花括号,则可以使用 v:gsub("%b{}", ":id") (请参阅 demo ),% b{} 将匹配嵌套大括号内的子字符串。

关于regex - Lua 正则表达式替换花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57787552/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com