# If you'd like to omit non-matching lines from the result; add ';d' to the end of the expression.
sed -E 's/\[((\w+)\b[^]]*)\]((?>(?!\[\2\b).|(?R))*)\[\\/\2]/<$1>$3<\/$2>/gs;t' <<< "[html style=\"font-size: 18px;\" dir=\"ltr\"][div style=\"font-size: 18px;\" dir=\"ltr\"][p style=\"font-weight: bold;\"]Hello,[/p][p]You have got a new message from [a href=\"https://www.example.com/\"]Example.com[/a][br][br].You could check your message on [a href=\"https://www.example.com/en/manager/inbox.html\"]Manager[/a][/p][p][img src=\"https://www.example.com/assets/images/logo-default-120x50.png\" width=\"120px\" height=\"80px\"][div style=\"color: #D4192D; font-weight: bold;\"]Example.com Team[/div][/p][/div][/html]
[div style=\"font-size: 18px;\" dir=\"ltr\"][p style=\"font-weight: bold;\"]Hello,[/p][p]You have got a new message from [a href=\"https://www.example.com/\"]Example.com[/a][br][br].You could check your message on [a href=\"https://www.example.com/en/manager/inbox.html\"]Manager[/a][/p][p][img src=\"https://www.example.com/assets/images/logo-default-120x50.png\" width=\"120px\" height=\"80px\"][div style=\"color: #D4192D; font-weight: bold;\"]Example.com Team[/div][/p][/div]
You have got a new message from [a href=\"https://www.example.com/\"]Example.com[/a][br][br].You could check your message on [a href=\"https://www.example.com/en/manager/inbox.html\"]Manager[/a]"
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for SED, please visit: https://www.gnu.org/software/sed/manual/html_node/The-_0022s_0022-Command.html