Regexp represents a regular expression.
Attribute | Description | Required |
---|---|---|
pattern | regular expression pattern | Yes |
refid | Makes this regexp
a reference to
a regexp defined elsewhere. If specified no other
attributes or nested elements are allowed. |
No |
<regexp id="myregexp" pattern="alpha(.+)beta"/>
Defines a regular expression for later use with id myregexp
.
<regexp refid="myregexp"/>
Use the regular expression with id myregexp
.
Apache Ant comes with wrappers for
the java.util.regex
package, jakarta-regexp and jakarta-ORO, see installation
dependencies concerning the supporting libraries.
The property ant.regexp.regexpimpl
governs which regular expression implementation
will be chosen. Possible values for this property are:
org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp
org.apache.tools.ant.util.regexp.JakartaOroRegexp
org.apache.tools.ant.util.regexp.JakartaRegexpRegexp
It can also be another implementation of the
interface org.apache.tools.ant.util.regexp.Regexp
.
If ant.regexp.regexpimpl
is not defined, Ant uses Jdk14Regexp as this is always
available.
There are cross-platform issues for matches related to line terminator. For example if you
use $
to anchor your regular expression on the end of a line the results might be very
different depending on both your platform and the regular expression library you use. It
is highly recommended that you test your pattern on both Unix and Windows platforms before
you rely on it.
\nand is consistent with Perl.
java.util.regex
uses \n,
\r\n,
\u0085,
\u2028,
\u2029as a default but is configured in the wrapper to use only
\n(UNIX_LINE)
We used to recommend that you use Jakarta ORO but since its development has been retired Java's built-in regex package is likely the best choice going forward.
These string filters also use the mechanism of regexp to choose a regular expression implementation: