User Guide

Table Of Contents
Using backreferences 151
You can use backreferencing when searching for repeated words in a string, such as “the the” or “is
is”. The following example uses backreferencing to find all repeated words in the search string and
replace them with an asterisk:
REReplace("There is is coffee in the the kitchen",
"[ ]+([A-Za-z]+)[ ]+\1"," * ","ALL")
Using this regular expression, ColdFusion detects the two occurrences of “is” as well as the two
occurrences of “the”, replaces them with an asterisk enclosed in spaces, and returns the following
string:
There * coffee in * kitchen
You interpret the regular expression [ ]+([A-Za-z]+)[ ]+\1 as follows:
Use the subexpression ([A-Za-z]+) to search for character strings consisting of one or more letters,
enclosed by one or more spaces, [ ]+, followed by the same character string that matched the first
subexpression, \1.
You reference the matched characters of a subexpression using a slash followed by a digit n (\n)
where the first subexpression in a regular expression is referenced as \1, the second as \2, etc. The
next section includes an example using multiple backreferences.
Using backreferences in replacement strings
You can use backreferences in the replacement string of both the
REReplace and
REReplaceNoCase functions. For example, to replace the first repeated word in a text string with
a single word, use the following syntax:
REReplace("There is is a cat in in the kitchen",
"([A-Za-z ]+)\1","\1")
This results in the sentence:
"There is a cat in in the kitchen"
You can use the optional fourth parameter to REReplace, scope, to replace all repeated words, as in
the following code:
REReplace("There is is a cat in in the kitchen",
"([A-Za-z ]+)\1","\1","ALL")
This results in the following string:
“There is a cat in the kitchen”
The next example uses two backreferences to reverse the order of the words "apples" and "pears"
in a sentence:
<cfset astring = "apples and pears, apples and pears, apples and pears">
<cfset newString = REReplace("#astring#", "(apples) and (pears)",
"\2 and \1","ALL")>
In this example, you reference the subexpression (apples) as \1 and the subexpression (pears) as \2.
The
REReplace function returns the string:
"pears and apples, pears and apples, pears and apples"