2012-12-25 9 views
15

Was sind die Unterschiede zwischen Perl und Java in Bezug darauf, was Ausdrücke für reguläre Ausdrücke unterstützt?Was sind die Unterschiede zwischen Perl und Java Regex-Funktionen?

Diese Frage ist isoliert nur die reguläre Ausdrücke, und schließt insbesondere Unterschiede in wie regex verwendet werden kann - also die Funktionen/Methoden zur Verfügung, die Verwendung Regex - und syntaktischen Unterschiede zwischen den Sprachen wie die Java-Anforderung zu entkommen Backslashes etc.

Von besonderem Interesse ist die teilweise/gelegentliche Unterstützung, die Java für Lookbacks variabler Länge hat.

+0

Ein bisschen die Frage, aber das ist ein grober Vergleich zwischen ** ECMA ** (JS) Regex und Perl: http://Stackoverflow.com/a/12127503/1400768 – nhahtdh

Antwort

16

Der Abschnitt "Vergleich zu Perl 5" von java.util.regex.Pattern listet viele Unterschiede auf. Zum Beispiel unterstützt Java conditional regex nicht. Dafür müssen Sie eine externe Bibliothek wie JRegex verwenden.

+8

Das scheint ziemlich vollständig. Dazu würde ich hinzufügen, dass Perl Regex-Engine viel bessere Unicode-Unterstützung als andere hat. Tatsächlich haben die Perl-Entwickler kürzlich Unzulänglichkeiten im Unicode-Standard festgestellt, weil niemand jemals so weit gekommen ist, wie Perl es vorher getan hat. (Der Standard wurde dadurch aktualisiert!) – ikegami

1

Es gibt einen Absatz in java.util.regex.Pattern API "Vergleich mit Perl 5".

+0

Bitte fügen Sie einen Link. Die Seite, die ich von der Suche bekommen habe, die Perl Regex sagt, hat keine Funktion, die vor einem halben Jahrzehnt hinzugefügt wurde. – ikegami

+0

@ikegami .. Möglicherweise haben Sie den Java 6 oder älter Link. Suchen Sie nach 'PAtern class in Java 7'. Ich habe den Link in meiner Antwort hinzugefügt. –

1

Die Folien von Tom Christiansens OSCON Talk Unicode Support Shootout: The Good, the Bad, & the (mostly) ugly decken einige der Unterschiede zwischen Perl und Java (und anderen Sprachen) bezüglich der Unterstützung der Unicode-technischen Empfehlungen für Regexes ab und unterscheiden zwischen Java 1.6 und 1.7 (was die Unterstützung signifikant verbessert) .

Verwandte Themen