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.
Please start posting anonymously - your entry will be published after you log in or create a new account. This space is reserved only for answers. If you would like to engage in a discussion, please instead post a comment under the question or an answer that you would like to discuss
Asked: 2021-12-20 11:00:00 +0000
Seen: 8 times
Last updated: Nov 20 '22
What is the process for initializing Java UDFs in Spark?
What does the error message "Error detected while processing $/.config/nvim/init.lua" mean?
What are the components that explain the state of ECMAScript execution context specification?
Does GraphDB automatically eliminate duplicate triples?
It appears that Vitest is not effectively mimicking or simulating behavior.
How can OMNET++ be used to simulate M/M/c/c?
How can I use oversampling to address a problem?
What is the method to determine the most precise categorization of data using Self Organizing Map?