The following test code (derived from the blojsom wiki code) exposes a bug in our regex compiler....
import java.util.regex.Pattern; public class pat { private static final String YMD_PERMALINK_REGEX = "/(\\d\\d\\d\\d)/(\\d{1,2}+)/(\\d{1,2}+)/(.+)"; private static final Pattern YMD_PERMALINK_PATTERN = Pattern.compile(YMD_PERMALINK_REGEX, Pattern.UNICODE_CASE); public static void main (String[] args) { System.out.println ("ok"); } } This should print "ok", but instead we get: $ gij pat Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0) at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0) at java.lang.Class.forName(java.lang.String) (/usr/lib/libgcj.so.6.0.0) at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0) Caused by: java.util.regex.PatternSyntaxException: At position 8 in regular expression pattern: attempted to repeat a token that is already repeated /(\d\d\d\d)/(\d{1,2}+)/(\d{1,2}+)/(.+) ^ at java.util.regex.Pattern.Pattern(java.lang.String, int) (/usr/lib/libgcj.so.6.0.0) at java.util.regex.Pattern.compile(java.lang.String, int) (/usr/lib/libgcj.so.6.0.0) at pat.<clinit>() (Unknown Source) at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0) ...3 more -- Summary: regex pattern compiling bug Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: libgcj AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: green at redhat dot com CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org GCC host triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20435