in reply to Re: A Perl vs. Java fight brews
in thread A Perl vs. Java fight brews

Java has had regular expressions for years. They've even implemented the named capture syntax that we won't have until perl6.

⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

Replies are listed 'Best First'.
Re^3: A Perl vs. Java fight brews
by emazep (Priest) on Jul 25, 2006 at 10:11 UTC
    Though regex support in Java was introduced several years ago (but not that many: JDK 1.4 AFAIK, 2002 circa, if we mean the java.util.regex package), it still doesn't offer advanced things such as match-time code evaluation, match-time pattern interpolation and conditional interpolation.

    So, for example, with a Java regex you can't build a recursive pattern (to check for instance if the parentheses in a text are balanced), while in Perl you can ;-)

    Update

    It can also be interesting to see how more verbose Java regexes are compared to Perl regexes.
    Here is a simple Perl example:
    my $pat = qr/a+b/; my $res = "aaab" =~ $pat;
    and here is its Java counterpart:
    import java.util.regex.*; Pattern pat = Pattern.compile("a+b"); Matcher mat = pat.matcher("aaab"); boolean res = mat.matches();
    Really, the above 2 last lines could be substituted by the following somewhat shorter code:
    boolean res = pat.matcher("aaab").matches();
    but if you don't explicitly instantiate a Matcher object, you can't have several things such as match, prematch, postmatch etc. which Perl gives you for free (through the various predefined variables $&, $`, $' etc.)

    Ciao, Emanuele.
Re^3: A Perl vs. Java fight brews
by adrianh (Chancellor) on Jul 25, 2006 at 07:09 UTC
    Java has had regular expressions for years. They've even implemented the named capture syntax that we won't have until perl6.

    I didn't think they were as flexible as the Perl ones (e.g. using composition to build up regexes from component regexes, //e, etc.)?

    However I freely admit I could be wrong. It's been several years since I've done any serious Java and I'm too lazy to look things up :-)