比方说,我想写一个正则表达式来改变这一切<abc>,<def>和<ghi>标签为<xyz>标签..我也想改变自己的结束标记</xyz>.这似乎是一个合理的正则表达式(忽略反引号;如果我不包含它们,则StackOverflow会出现小于号的问题):
`s!<(/)?(abc|def|ghi)>!<${1}xyz>!g;`
Run Code Online (Sandbox Code Playgroud)
它也有效.唯一的问题是,对于打开标签,可选的$ 1变量被赋予undef,因此我得到一个"使用未初始化的值..."警告.
解决这个问题的优雅方法是什么?我宁愿不把它变成两个单独的正则表达式,一个用于打开标签,另一个用于关闭标签,因为那时需要维护两个标签列表副本,而不是一个.
编辑:我知道我可以在代码的这个区域关闭警告,但我不认为"优雅".