What are the differences between perl and java regex capabilities?

What are the differences between perl and java with regard to what regular expression terms are supported?

This question is isolated to just the regular expressions, and specifically excludes differences in how regex can be used - ie the functions/methods available that use regex - and syntactic differences between the languages such as the java requirement to escape backslashes etc.

Of particular interest is the partial/occasional support java has for variable length look-behinds.


Solution 1:

The "Comparison to Perl 5" section of java.util.regex.Pattern lists many differences. For example, Java does not support conditional regex. For that, you need to use some external library like JRegex.

Solution 2:

There is a paragraph in java.util.regex.Pattern API "Comparison to Perl 5".

Solution 3:

The slides from Tom Christiansen's OSCON talk Unicode Support Shootout: The Good, the Bad, & the (mostly) ugly cover some of the differences between Perl and Java (and other languages) regarding support of the Unicode technical recommendations for regexes, and they distinguish between Java 1.6 and 1.7 (which improves support significantly).