Perl
Perl
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 Perl Downloads
use chilkat();
$success = 0;
$success = 0;
$subject = "John Anders, +_+_+ Mary Robins $$$$";
$pattern = "\\w+\\s+\\w+";
$sb = chilkat::CkStringBuilder->new();
$sb->Append($subject);
$json = chilkat::CkJsonObject->new();
$json->put_EmitCompact(0);
$timeoutMs = 2000;
$numMatches = $sb->RegexMatch($pattern,$json,$timeoutMs);
if ($numMatches < 0) {
# Probably an error in the regular expression.
# Suggestion: Use AI to help create and/or diagnose regular expressions.
print $sb->lastErrorText() . "\r\n";
exit;
}
# Examine the matches:
print $json->emit() . "\r\n";
# {
# "match": [
# {
# "group": [
# {
# "cap": "John Anders",
# "idx": 0,
# "len": 11
# }
# ]
# },
# {
# "group": [
# {
# "cap": "Mary Robins",
# "idx": 19,
# "len": 11
# }
# ]
# }
# ]
# }
$sbTemp = chilkat::CkStringBuilder->new();
$i = 0;
$numMatches = $json->SizeOfArray("match");
while ($i < $numMatches) {
$json->put_I($i);
# The full match is always in group 0.
$sbTemp->Clear();
$json->StringOfSb("match[i].group[0].cap",$sbTemp);
# Indicate that we wish to replace the full match with it's value converted to uppercase.
$sbTemp->ToUppercase();
$json->UpdateSb("match[i].group[0].rep",$sbTemp);
$i = $i + 1;
}
# The JSON now has replacement strings:
print $json->emit() . "\r\n";
# {
# "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.
$success = $sb->RegexReplace($json);
if ($success == 0) {
print $sb->lastErrorText() . "\r\n";
exit;
}
print "Result after doing replacements:" . "\r\n";
print $sb->getAsString() . "\r\n";
# Result after doing replacements:
# JOHN ANDERS, +_+_+ MARY ROBINS $$$$