Lua Requires Chilkat v11.1.0+
Lua
Regular Expression Replace Full Matches
See more Regular Expressions Examples
Demonstrates replacing the full matches of a regular expression.Note: Chilkat uses PCRE2. See PCRE2 Regular Expressions
Also see: PCRE2 Performance
Chilkat Lua Downloads
local chilkat = require("chilkat")
local subject = "John Anders, +_+_+ Mary Robins $$$$"
local pattern = "\\w+\\s+\\w+"
local sb = chilkat.StringBuilder.new()
sb:append(subject)
local json = chilkat.JsonObject.new()
json.emit_compact = false
local timeoutMs = 2000
local numMatches = sb:regex_match(pattern, json, timeoutMs)
if numMatches < 0 then
-- Probably an error in the regular expression.
-- Suggestion: Use AI to help create and/or diagnose regular expressions.
print(sb.last_error_text)
return
end
-- Examine the matches:
print(json:emit())
-- {
-- "match": [
-- {
-- "group": [
-- {
-- "cap": "John Anders",
-- "idx": 0,
-- "len": 11
-- }
-- ]
-- },
-- {
-- "group": [
-- {
-- "cap": "Mary Robins",
-- "idx": 19,
-- "len": 11
-- }
-- ]
-- }
-- ]
-- }
local sbTemp = chilkat.StringBuilder.new()
local i = 0
numMatches = json:size_of_array("match")
while i < numMatches do
json.i = i
-- The full match is always in group 0.
sbTemp:clear()
json:string_of_sb("match[i].group[0].cap", sbTemp)
-- Indicate that we wish to replace the full match with it's value converted to uppercase.
sbTemp:to_uppercase()
json:update_sb("match[i].group[0].rep", sbTemp)
i = i + 1
end
-- The JSON now has replacement strings:
print(json:emit())
-- {
-- "match": [
-- {
-- "group": [
-- {
-- "cap": "John Anders",
-- "idx": 0,
-- "len": 11,
-- "rep": "JOHN ANDERS"
-- }
-- ]
-- },
-- {
-- "group": [
-- {
-- "cap": "Mary Robins",
-- "idx": 19,
-- "len": 11,
-- "rep": "MARY ROBINS"
-- }
-- ]
-- }
-- ]
-- }
-- Call RegexReplace to update the StringBuilder with the replacements.
local success = sb:regex_replace(json)
if not success then
print(sb.last_error_text)
return
end
print("Result after doing replacements:")
print(sb:get_as_string())
-- Result after doing replacements:
-- JOHN ANDERS, +_+_+ MARY ROBINS $$$$