aspose file tools*
The moose likes Beginning Java and the fly likes Why does this fail? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Why does this fail?" Watch "Why does this fail?" New topic
Author

Why does this fail?

K Riaz
Ranch Hand

Joined: Jan 08, 2005
Posts: 375
I have a simple regex which throws: [java.lang.IllegalArgumentException] Illegal group reference.

The code is simple but I cannot figure out why. I have put String Y in the second post to make it more readable (it contains some XML).




Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference
at java.util.regex.Matcher.appendReplacement(Matcher.java:561)
at java.util.regex.Matcher.replaceAll(Matcher.java:661)
at java.lang.String.replaceAll(String.java:1663)
at ReplaceTest.main(ReplaceTest.java:13)

[ March 24, 2005: Message edited by: Kashif Riaz ]
K Riaz
Ranch Hand

Joined: Jan 08, 2005
Posts: 375
String y =



[ March 24, 2005: Message edited by: Kashif Riaz ]
[ March 24, 2005: Message edited by: Kashif Riaz ]
K Riaz
Ranch Hand

Joined: Jan 08, 2005
Posts: 375
Solved! It was the dollar sign in the String y:



Thanks for looking.
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24187
    
  34

This is just a wild guess: the replacement string can contain group references using the syntax $1, $2, $3... to substitute the 1st, 2nd, 3rd captured group. Dollar signs have to be escaped to be included literally.

You don't have any dollar signs, but you do have a tag "<settcurr>�!</settcurr>". I wonder if any currency symbol can be used in place of "$"? If so, then perhaps "�!" is a currency symbol (it doesn't render correctly in my browser, so I don't know what it is), and so you've got the invalid captured group reference "�!<". You can try escaping the currency symbol by inserting "\\" into the String right before it.


[Jess in Action][AskingGoodQuestions]
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Why does this fail?