Skip to main content
Clarified desire for a dynamic solution
Source Link
Marty C.
  • 4.5k
  • 7
  • 32
  • 61

In IDEs a common operation is to perform a search and replace operation using a regex pattern in the search field and another pattern with capture groups in the replacement field.

For example, I can search for (\d)(\D)(\d) and replace it with first: \1; second: \2; third: \3. This would produce the following results.

  • "1a2" => "first: 1; second: a; third: 2"
  • "8o8" => "first: 8; second: o; third: 8"

Is there an easy way to perform this same operation on a String object in Apex? I'm looking for a solution that isn't hard-constrained to only process three capture groups. The number of capture groups is variable: could be 2, 3, 5 or any number.

In IDEs a common operation is to perform a search and replace operation using a regex pattern in the search field and another pattern with capture groups in the replacement field.

For example, I can search for (\d)(\D)(\d) and replace it with first: \1; second: \2; third: \3. This would produce the following results.

  • "1a2" => "first: 1; second: a; third: 2"
  • "8o8" => "first: 8; second: o; third: 8"

Is there an easy way to perform this same operation on a String object in Apex?

In IDEs a common operation is to perform a search and replace operation using a regex pattern in the search field and another pattern with capture groups in the replacement field.

For example, I can search for (\d)(\D)(\d) and replace it with first: \1; second: \2; third: \3. This would produce the following results.

  • "1a2" => "first: 1; second: a; third: 2"
  • "8o8" => "first: 8; second: o; third: 8"

Is there an easy way to perform this same operation on a String object in Apex? I'm looking for a solution that isn't hard-constrained to only process three capture groups. The number of capture groups is variable: could be 2, 3, 5 or any number.

Source Link
Marty C.
  • 4.5k
  • 7
  • 32
  • 61

Regex Search-and-Replace with Capture Groups?

In IDEs a common operation is to perform a search and replace operation using a regex pattern in the search field and another pattern with capture groups in the replacement field.

For example, I can search for (\d)(\D)(\d) and replace it with first: \1; second: \2; third: \3. This would produce the following results.

  • "1a2" => "first: 1; second: a; third: 2"
  • "8o8" => "first: 8; second: o; third: 8"

Is there an easy way to perform this same operation on a String object in Apex?