All Packages Class Hierarchy This Package Previous Next Index
Class com.oroinc.text.regex.Perl5Substitution
java.lang.Object
|
+----com.oroinc.text.regex.StringSubstitution
|
+----com.oroinc.text.regex.Perl5Substitution
- public class Perl5Substitution
- extends StringSubstitution
Perl5Substitution implements a Substitution consisting of a
literal string, but allowing Perl5 variable interpolation referencing
saved groups in a match. This class is intended for use with
Util.substitute .
The substitution string may contain variable interpolations referring
to the saved parenthesized groups of the search pattern.
A variable interpolation is denoted by $1, or $2,
or $3, etc. If you don't want such expressions to be
interpreted literally, you should set the numInterpolations
parameter to INTERPOLATE_NONE . It is easiest to explain
what an interpolated variable does by giving an example:
Suppose you have the pattern b\d+: and you want to substitute
the b's for a's and the colon for a dash in parts of
your input matching the pattern. You can do this by changing the
pattern to b(\d+): and using the substitution expression
a$1-. When a substitution is made, the $1 means
"Substitute whatever was matched by the first saved group of the
matching pattern." An input of b123: after substitution
would yield a result of a123-. But there's a little more
to be aware of. If you set the numInterpolations parameter to
INTERPOLATE_ALL, then every time a match is found, the
interpolation variables are computed relative to that match.
But if numInterpolations is set to some positive integer, then
only the interpolation variables for the first numInterpolations
matches are computed relative to the most recent match. After that,
the remaining substitutions have their variable interpolations performed
relative to the numInterpolations 'th match. So using the
previously mentioned pattern and substition expression, if you have
an input of
Tank b123: 85 Tank b256: 32 Tank b78: 22
and use a numInterpolations value of INTERPOLATE_ALL and
numSubs value (see
Util.substitute ).
of SUBSTITUTE_ALL, then your result will be:
Tank a123- 85 Tank a256- 32 Tank a78- 22
But if you set numInterpolations to 2 and keep
numSubs with a value of SUBSTITUTE_ALL, your result is:
Tank a123- 85 Tank a256- 32 Tank a256- 22
Notice how the last substitution uses the same value for $1
as the second substitution.
A final thing to keep in mind is that if you use an interpolation variable
that corresponds to a group not contained in the match, then it is
interpreted literally. So given the regular expression from the
example, and a substitution expression of a$2-, the result
of the last sample input would be:
Tank a$2- 85 Tank a$2- 32 Tank a$2- 22
Also, $0 is always interpreted literally.
Copyright © 1997-1998 Original Reusable Objects, Inc.
All rights reserved.
- Author:
- Daniel F. Savarese
- See Also:
- Substitution, Util, substitute, Substitution, StringSubstitution
-
INTERPOLATE_ALL
- A constant used when creating a Perl5Substitution indicating that
interpolation variables should be computed relative to the most
recent pattern match.
-
INTERPOLATE_NONE
- A constant used when creating a Perl5Substitution indicating that
interpolation variables should be interpreted literally, effectively
disabling interpolation.
-
Perl5Substitution()
- Default constructor initializing substitution to a zero length
String and the number of interpolations to
INTERPOLATE_ALL .
-
Perl5Substitution(String)
- Creates a Perl5Substitution using the specified substitution
and setting the number of interpolations to
INTERPOLATE_ALL .
-
Perl5Substitution(String, int)
- Creates a Perl5Substitution using the specified substitution
and setting the number of interpolations to the specified value.
-
appendSubstitution(StringBuffer, MatchResult, int, String, PatternMatcher, Pattern)
- Appends the substitution to a buffer containing the original input
with substitutions applied for the pattern matches found so far.
-
setSubstitution(String)
- Sets the substitution represented by this Perl5Substitution, also
setting the number of interpolations to
INTERPOLATE_ALL .
-
setSubstitution(String, int)
- Sets the substitution represented by this Perl5Substitution, also
setting the number of interpolations to the specified value.
INTERPOLATE_ALL
public static final int INTERPOLATE_ALL
- A constant used when creating a Perl5Substitution indicating that
interpolation variables should be computed relative to the most
recent pattern match.
INTERPOLATE_NONE
public static final int INTERPOLATE_NONE
- A constant used when creating a Perl5Substitution indicating that
interpolation variables should be interpreted literally, effectively
disabling interpolation.
Perl5Substitution
public Perl5Substitution()
- Default constructor initializing substitution to a zero length
String and the number of interpolations to
INTERPOLATE_ALL .
Perl5Substitution
public Perl5Substitution(String substitution)
- Creates a Perl5Substitution using the specified substitution
and setting the number of interpolations to
INTERPOLATE_ALL .
- Parameters:
- substitution - The string to use as a substitution.
Perl5Substitution
public Perl5Substitution(String substitution,
int numInterpolations)
- Creates a Perl5Substitution using the specified substitution
and setting the number of interpolations to the specified value.
- Parameters:
- substitution - The string to use as a substitution.
- numInterpolations
- If set to INTERPOLATE_NONE, interpolation variables are
interpreted literally and not as references to the saved
parenthesized groups of a pattern match. If set to
INTERPOLATE_ALL , all variable interpolations
are computed relative to the pattern match responsible for
the current substitution. If set to a positive integer,
the first numInterpolations substitutions have
their variable interpolation performed relative to the
most recent match, but the remaining substitutions have
their variable interpolations performed relative to the
numInterpolations 'th match.
setSubstitution
public void setSubstitution(String substitution)
- Sets the substitution represented by this Perl5Substitution, also
setting the number of interpolations to
INTERPOLATE_ALL .
You should use this method in order to avoid repeatedly allocating new
Perl5Substitutions. It is recommended that you allocate a single
Perl5Substitution and reuse it by using this method when appropriate.
- Parameters:
- substitution - The string to use as a substitution.
- Overrides:
- setSubstitution in class StringSubstitution
setSubstitution
public void setSubstitution(String substitution,
int numInterpolations)
- Sets the substitution represented by this Perl5Substitution, also
setting the number of interpolations to the specified value.
You should use this method in order to avoid repeatedly allocating new
Perl5Substitutions. It is recommended that you allocate a single
Perl5Substitution and reuse it by using this method when appropriate.
- Parameters:
- substitution - The string to use as a substitution.
- numInterpolations
- If set to INTERPOLATE_NONE, interpolation variables are
interpreted literally and not as references to the saved
parenthesized groups of a pattern match. If set to
INTERPOLATE_ALL , all variable interpolations
are computed relative to the pattern match responsible for
the current substitution. If set to a positive integer,
the first numInterpolations substitutions have
their variable interpolation performed relative to the
most recent match, but the remaining substitutions have
their variable interpolations performed relative to the
numInterpolations 'th match.
appendSubstitution
public void appendSubstitution(StringBuffer appendBuffer,
MatchResult match,
int substitutionCount,
String originalInput,
PatternMatcher matcher,
Pattern pattern)
- Appends the substitution to a buffer containing the original input
with substitutions applied for the pattern matches found so far.
See
Substitution.appendSubstitution for more details regarding the
expected behavior of this method.
- Parameters:
- appendBuffer - The buffer containing the new string resulting
from performing substitutions on the original input.
- match - The current match causing a substitution to be made.
- substitutionCount - The number of substitutions that have been
performed so far by Util.substitute.
- originalInput - The original input upon which the substitutions are
being performed.
- matcher - The PatternMatcher used to find the current match.
- pattern - The Pattern used to find the current match.
- Overrides:
- appendSubstitution in class StringSubstitution
All Packages Class Hierarchy This Package Previous Next Index