Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

You can use Lua's string.gsub function to globally search for the pattern and capture both the "pattern" and "default" values. Here's an example:

local input = "some text with {{{parameter}}} and {{{parameter|default}}} placeholders"
local pattern = "{%{%{(.-)%}%}}"
local output = input:gsub(pattern, function(match)
  local parts = {}
  for part in match:gmatch("[^|]+") do
    table.insert(parts, part)
  end
  local pattern = parts[1]
  local default = parts[2] or ""
  print(pattern, default)
end)

In this example, we define the input string and the pattern we want to search for. The pattern matches three opening curly braces, followed by any characters (lazy), followed by three closing curly braces. The .- captures any text between the first and last curly braces, and the () around it make it a capture group.

We use string.gsub to replace all occurrences of the pattern with the result of a function. The function takes the matched text as an argument, and extracts the pattern and default values from it. We split the matched text on the | character to get the two parts, and then use the or operator to set the default value to an empty string if it's not present.

Finally, we print out the pattern and default values for each match. The output variable will contain the original text with the placeholders replaced with our custom values.