|
|||||||||
| Home >> All >> org >> apache >> oro >> text >> [ regex overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.apache.oro.text.regex
Class Perl5Substitution

java.lang.Objectorg.apache.oro.text.regex.StringSubstitution
org.apache.oro.text.regex.Perl5Substitution
- All Implemented Interfaces:
- Substitution
- 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 55 .
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:
-
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 substitution expression, if you have
an input of
Tank b123: 85 Tank b256: 32 Tank b78: 22and use a numInterpolations value of INTERPOLATE_ALL and numSubs value (see Util.substitute 55 ) 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:
- \\U
- make substitution uppercase until end of substitution or \\E
- \\u
- make next character uppercase
- \\L
- make substitution uppercase until end of substitution or \\E
- \\l
- make next character uppercase
- \\E
- mark the end of the case modification
- Since:
- 1.1
- Version:
- @version@
| Field Summary | |
private static int |
__MAX_GROUPS
The maximum number of groups supported by interpolation. |
private static int |
__OPCODE_STORAGE_SIZE
The initial size and unit of growth for the _subOpCodes array. |
(package private) java.lang.String |
_lastInterpolation
|
(package private) int |
_numInterpolations
|
(package private) static int |
_OPCODE_COPY
A constant declaring opcode for copy operation. |
(package private) static int |
_OPCODE_ENDCASE_MODE
A constant declaring opcode for lowercase mode operation. |
(package private) static int |
_OPCODE_LOWERCASE_CHAR
A constant declaring opcode for lowercase char operation. |
(package private) static int |
_OPCODE_LOWERCASE_MODE
A constant declaring opcode for lowercase mode operation. |
(package private) static int |
_OPCODE_UPPERCASE_CHAR
A constant declaring opcode for uppercase char operation. |
(package private) static int |
_OPCODE_UPPERCASE_MODE
A constant declaring opcode for lowercase mode operation. |
(package private) int[] |
_subOpcodes
|
(package private) int |
_subOpcodesCount
|
(package private) char[] |
_substitutionChars
|
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. |
| Fields inherited from class org.apache.oro.text.regex.StringSubstitution |
_subLength, _substitution |
| Constructor Summary | |
Perl5Substitution()
Default constructor initializing substitution to a zero length String and the number of interpolations to INTERPOLATE_ALL 55 . |
|
Perl5Substitution(java.lang.String substitution)
Creates a Perl5Substitution using the specified substitution and setting the number of interpolations to INTERPOLATE_ALL 55 . |
|
Perl5Substitution(java.lang.String substitution,
int numInterpolations)
Creates a Perl5Substitution using the specified substitution and setting the number of interpolations to the specified value. |
|
| Method Summary | |
private void |
__addElement(int value)
|
private static boolean |
__isInterpolationCharacter(char ch)
|
private void |
__parseSubs(java.lang.String sub)
|
(package private) void |
_calcSub(java.lang.StringBuffer buffer,
MatchResult result)
|
(package private) java.lang.String |
_finalInterpolatedSub(MatchResult result)
|
void |
appendSubstitution(java.lang.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(java.lang.String substitution)
Sets the substitution represented by this Perl5Substitution, also setting the number of interpolations to INTERPOLATE_ALL 55 . |
void |
setSubstitution(java.lang.String substitution,
int numInterpolations)
Sets the substitution represented by this Perl5Substitution, also setting the number of interpolations to the specified value. |
| Methods inherited from class org.apache.oro.text.regex.StringSubstitution |
getSubstitution, toString |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
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.
- See Also:
- Constant Field Values
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.
- See Also:
- Constant Field Values
__OPCODE_STORAGE_SIZE
private static final int __OPCODE_STORAGE_SIZE
- The initial size and unit of growth for the
_subOpCodes array.
- See Also:
- Constant Field Values
__MAX_GROUPS
private static final int __MAX_GROUPS
- The maximum number of groups supported by interpolation.
- See Also:
- Constant Field Values
_OPCODE_COPY
static final int _OPCODE_COPY
- A constant declaring opcode for copy operation.
- See Also:
- Constant Field Values
_OPCODE_LOWERCASE_CHAR
static final int _OPCODE_LOWERCASE_CHAR
- A constant declaring opcode for lowercase char operation.
- See Also:
- Constant Field Values
_OPCODE_UPPERCASE_CHAR
static final int _OPCODE_UPPERCASE_CHAR
- A constant declaring opcode for uppercase char operation.
- See Also:
- Constant Field Values
_OPCODE_LOWERCASE_MODE
static final int _OPCODE_LOWERCASE_MODE
- A constant declaring opcode for lowercase mode operation.
- See Also:
- Constant Field Values
_OPCODE_UPPERCASE_MODE
static final int _OPCODE_UPPERCASE_MODE
- A constant declaring opcode for lowercase mode operation.
- See Also:
- Constant Field Values
_OPCODE_ENDCASE_MODE
static final int _OPCODE_ENDCASE_MODE
- A constant declaring opcode for lowercase mode operation.
- See Also:
- Constant Field Values
_numInterpolations
int _numInterpolations
_subOpcodes
int[] _subOpcodes
_subOpcodesCount
int _subOpcodesCount
_substitutionChars
char[] _substitutionChars
_lastInterpolation
transient java.lang.String _lastInterpolation
| Constructor Detail |
Perl5Substitution
public Perl5Substitution()
- Default constructor initializing substitution to a zero length
String and the number of interpolations to
INTERPOLATE_ALL55 .
Perl5Substitution
public Perl5Substitution(java.lang.String substitution)
- Creates a Perl5Substitution using the specified substitution
and setting the number of interpolations to
INTERPOLATE_ALL55 .
Perl5Substitution
public Perl5Substitution(java.lang.String substitution, int numInterpolations)
- Creates a Perl5Substitution using the specified substitution
and setting the number of interpolations to the specified value.
| Method Detail |
__isInterpolationCharacter
private static final boolean __isInterpolationCharacter(char ch)
__addElement
private void __addElement(int value)
__parseSubs
private void __parseSubs(java.lang.String sub)
_finalInterpolatedSub
java.lang.String _finalInterpolatedSub(MatchResult result)
_calcSub
void _calcSub(java.lang.StringBuffer buffer, MatchResult result)
setSubstitution
public void setSubstitution(java.lang.String substitution)
- Sets the substitution represented by this Perl5Substitution, also
setting the number of interpolations to
INTERPOLATE_ALL55 . 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.- Overrides:
setSubstitutionin classStringSubstitution
setSubstitution
public void setSubstitution(java.lang.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.
appendSubstitution
public void appendSubstitution(java.lang.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.
See
Substitution.appendSubstition() 55
for more details regarding the expected behavior of this method.
- Specified by:
appendSubstitutionin interfaceSubstitution- Overrides:
appendSubstitutionin classStringSubstitution
|
|||||||||
| Home >> All >> org >> apache >> oro >> text >> [ regex overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC