diff --git a/src/etc/testcases/filters/tokenfilter.xml b/src/etc/testcases/filters/tokenfilter.xml index 451d7044e..ddfa57eba 100644 --- a/src/etc/testcases/filters/tokenfilter.xml +++ b/src/etc/testcases/filters/tokenfilter.xml @@ -181,6 +181,15 @@ + + + @hello@ + + + + + + diff --git a/src/main/org/apache/tools/ant/util/regexp/JakartaOroRegexp.java b/src/main/org/apache/tools/ant/util/regexp/JakartaOroRegexp.java index 822ff67d0..84b19898d 100644 --- a/src/main/org/apache/tools/ant/util/regexp/JakartaOroRegexp.java +++ b/src/main/org/apache/tools/ant/util/regexp/JakartaOroRegexp.java @@ -76,7 +76,10 @@ public class JakartaOroRegexp extends JakartaOroMatcher implements Regexp { StringBuffer subst = new StringBuffer(); for (int i = 0; i < argument.length(); i++) { char c = argument.charAt(i); - if (c == '\\') { + if (c == '$') { + subst.append('\\'); + subst.append('$'); + } else if (c == '\\') { if (++i < argument.length()) { c = argument.charAt(i); int value = Character.digit(c, 10); diff --git a/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpRegexp.java b/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpRegexp.java index 5bb120c06..a58a73cf9 100644 --- a/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpRegexp.java +++ b/src/main/org/apache/tools/ant/util/regexp/Jdk14RegexpRegexp.java @@ -83,7 +83,10 @@ public class Jdk14RegexpRegexp extends Jdk14RegexpMatcher implements Regexp { StringBuffer subst = new StringBuffer(); for (int i = 0; i < argument.length(); i++) { char c = argument.charAt(i); - if (c == '\\') { + if (c == '$') { + subst.append('\\'); + subst.append('$'); + } else if (c == '\\') { if (++i < argument.length()) { c = argument.charAt(i); int value = Character.digit(c, 10); diff --git a/src/testcases/org/apache/tools/ant/filters/TokenFilterTest.java b/src/testcases/org/apache/tools/ant/filters/TokenFilterTest.java index 2472a5b97..e8461b41d 100644 --- a/src/testcases/org/apache/tools/ant/filters/TokenFilterTest.java +++ b/src/testcases/org/apache/tools/ant/filters/TokenFilterTest.java @@ -77,7 +77,7 @@ public class TokenFilterTest extends BuildFileTest { } public void tearDown() { - //executeTarget("cleanup"); + executeTarget("cleanup"); } /** make sure tokenfilter exists */ @@ -147,6 +147,12 @@ public class TokenFilterTest extends BuildFileTest { assertStringContains(contents, "world world world world"); } + public void testHandleDollerMatch() throws IOException { + if (! hasRegex("testFilterReplaceRegex")) + return; + executeTarget("dollermatch"); + } + public void testTrimFile() throws IOException { String contents = getFileString( "trimfile", "result/trimfile");