Sample code for 30+ languages & platforms
Swift

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 Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    success = false

    var subject: String? = "John Anders, +_+_+ Mary Robins $$$$"
    var pattern: String? = "\\w+\\s+\\w+"

    let sb = CkoStringBuilder()!
    sb.append(value: subject)

    let json = CkoJsonObject()!
    json.emitCompact = false

    var timeoutMs: Int = 2000
    var numMatches: Int = sb.regexMatch(pattern: pattern, json: json, timeoutMs: timeoutMs).intValue
    if numMatches < 0 {
        // Probably an error in the regular expression.
        // Suggestion: Use AI to help create and/or diagnose regular expressions.
        print("\(sb.lastErrorText!)")
        return
    }

    // Examine the matches:
    print("\(json.emit()!)")

    // {
    //   "match": [
    //     {
    //       "group": [
    //         {
    //           "cap": "John Anders",
    //           "idx": 0,
    //           "len": 11
    //         }
    //       ]
    //     },
    //     {
    //       "group": [
    //         {
    //           "cap": "Mary Robins",
    //           "idx": 19,
    //           "len": 11
    //         }
    //       ]
    //     }
    //   ]
    // }

    let sbTemp = CkoStringBuilder()!

    var i: Int = 0
    numMatches = json.size(ofArray: "match").intValue
    while i < numMatches {

        json.i = i

        // The full match is always in group 0.
        sbTemp.clear()
        json.string(ofSb: "match[i].group[0].cap", sb: sbTemp)

        // Indicate that we wish to replace the full match with it's value converted to uppercase.
        sbTemp.toUppercase()
        json.updateSb(jsonPath: "match[i].group[0].rep", sb: sbTemp)

        i = i + 1
    }

    // 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.
    success = sb.regexReplace(json: json)
    if success == false {
        print("\(sb.lastErrorText!)")
        return
    }

    print("Result after doing replacements:")
    print("\(sb.getAsString()!)")

    // Result after doing replacements:
    // JOHN ANDERS, +_+_+ MARY ROBINS $$$$

}