org.apache.oro.text.regex
public class Perl5Substitution extends StringSubstitution
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 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:
Tank b123: 85 Tank b256: 32 Tank b78: 22and 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- 22But 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- 22Notice 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 as the empty string. 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- 85 Tank a- 32 Tank a- 22The special substitution $& will interpolate the entire portion of the input matched by the regular expression. $0 will do the same, but it is recommended that it be avoided because the latest versions of Perl use $0 to store the program name rather than duplicate the behavior of $&. Also, the result of substituting $ followed by a non-positive integer is undefined. In order to include a $ in a substitution, it should be escaped with a backslash (e.g., "\\$0").
Perl5 double-quoted string case modification is also supported in the substitution. The following escape sequences are supported:
Since: 1.1
Version: 2.0.8
See Also: Substitution Util Util Substitution StringSubstitution
Field Summary | |
---|---|
static int | INTERPOLATE_ALL
A constant used when creating a Perl5Substitution indicating that
interpolation variables should be computed relative to the most
recent pattern match. |
static int | INTERPOLATE_NONE
A constant used when creating a Perl5Substitution indicating that
interpolation variables should be interpreted literally, effectively
disabling interpolation. |
Constructor Summary | |
---|---|
Perl5Substitution()
Default constructor initializing substitution to a zero length
String and the number of interpolations to
INTERPOLATE_ALL. | |
Perl5Substitution(String substitution)
Creates a Perl5Substitution using the specified substitution
and setting the number of interpolations to
INTERPOLATE_ALL.
| |
Perl5Substitution(String substitution, int numInterpolations)
Creates a Perl5Substitution using the specified substitution
and setting the number of interpolations to the specified value.
|
Method Summary | |
---|---|
void | appendSubstitution(StringBuffer appendBuffer, MatchResult match, int substitutionCount, PatternMatcherInput 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.
|
void | setSubstitution(String substitution)
Sets the substitution represented by this Perl5Substitution, also
setting the number of interpolations to
INTERPOLATE_ALL.
|
void | setSubstitution(String substitution, int numInterpolations)
Sets the substitution represented by this Perl5Substitution, also
setting the number of interpolations to the specified value.
|
Parameters: substitution The string to use as a substitution.
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.
Substitution.appendSubstition()
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. This is a read-only parameter and is not modified. matcher The PatternMatcher used to find the current match. pattern The Pattern used to find the current match.
Parameters: substitution The string to use as a substitution.
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.