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");