Visual FoxPro
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL lcSubject
LOCAL lcPattern
LOCAL loSb
LOCAL loJson
LOCAL lnTimeoutMs
LOCAL lnNumMatches
LOCAL loSbTemp
LOCAL i
lnSuccess = 0
lnSuccess = 0
lcSubject = "John Anders, +_+_+ Mary Robins $$$$"
lcPattern = "\w+\s+\w+"
loSb = CreateObject('Chilkat.StringBuilder')
loSb.Append(lcSubject)
loJson = CreateObject('Chilkat.JsonObject')
loJson.EmitCompact = 0
lnTimeoutMs = 2000
lnNumMatches = loSb.RegexMatch(lcPattern,loJson,lnTimeoutMs)
IF (lnNumMatches < 0) THEN
* Probably an error in the regular expression.
* Suggestion: Use AI to help create and/or diagnose regular expressions.
? loSb.LastErrorText
RELEASE loSb
RELEASE loJson
CANCEL
ENDIF
* Examine the matches:
? loJson.Emit()
* {
* "match": [
* {
* "group": [
* {
* "cap": "John Anders",
* "idx": 0,
* "len": 11
* }
* ]
* },
* {
* "group": [
* {
* "cap": "Mary Robins",
* "idx": 19,
* "len": 11
* }
* ]
* }
* ]
* }
loSbTemp = CreateObject('Chilkat.StringBuilder')
i = 0
lnNumMatches = loJson.SizeOfArray("match")
DO WHILE i < lnNumMatches
loJson.I = i
* The full match is always in group 0.
loSbTemp.Clear()
loJson.StringOfSb("match[i].group[0].cap",loSbTemp)
* Indicate that we wish to replace the full match with it's value converted to uppercase.
loSbTemp.ToUppercase()
loJson.UpdateSb("match[i].group[0].rep",loSbTemp)
i = i + 1
ENDDO
* The JSON now has replacement strings:
? loJson.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.
lnSuccess = loSb.RegexReplace(loJson)
IF (lnSuccess = 0) THEN
? loSb.LastErrorText
RELEASE loSb
RELEASE loJson
RELEASE loSbTemp
CANCEL
ENDIF
? "Result after doing replacements:"
? loSb.GetAsString()
* Result after doing replacements:
* JOHN ANDERS, +_+_+ MARY ROBINS $$$$
RELEASE loSb
RELEASE loJson
RELEASE loSbTemp