Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Why does this fail?

 
K Riaz
Ranch Hand
Posts: 375
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 375
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
String y =



[ March 24, 2005: Message edited by: Kashif Riaz ]
[ March 24, 2005: Message edited by: Kashif Riaz ]
 
K Riaz
Ranch Hand
Posts: 375
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Solved! It was the dollar sign in the String y:



Thanks for looking.
 
Ernest Friedman-Hill
author and iconoclast
Marshal
Pie
Posts: 24212
35
Chrome Eclipse IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic