Unterschiede zwischen den Java-Versionen

(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)

Wie am Anfang des Kapitels erwähnt, beschreibt dieses Buch im Wesentlichen Java 1.5.0. Allerdings wird an vielen Orten noch Java 1.4.2 benutzt, andererseits findet Java 1.6 immer größere Verbreitung. Ich fasse hier deshalb die Unterschiede zwischen den Versionen 1.4.2, 1.5.0 (Update 11) und Java 1.6 (Update 1) noch einmal zusammen.

Unterschiede zwischen Java 1.4.2 und 1.5.0

In Java 1.5.0 hat sich bezüglich java.util.regex im Vergleich zu 1.4.2 wenig verändert, es sind allerdings eine Reihe von Methoden dazugekommen. In der Hauptsache sind dies Methoden, die etwas mit der Region des Matchers zu tun haben. Die Unterstützung von Unicode wurde verbessert und ein wenig verändert. Alle Änderungen werden in den folgenden Abschnitten aufgeführt. (Anmerkung: In Java 1.4.2 gab es das Konstrukt ˹(?1)˼, das aber nicht dokumentiert war; dieses ist in Java 1.5 nicht mehr vorhanden. Es verhält sich genauso wie das entsprechende Konstrukt in PCRE (siehe Rekursive reguläre Ausdrücke), aber weil es eben nie dokumentiert war, wird es hier in eine Fußnote verbannt.)

Neue Methoden in Java 1.5.0

Alles, was mit der Region des Matchers zu tun hat, gab es in Java 1.4.2 noch nicht:

  • region
  • regionStart
  • regionEnd
  • useAnchoringBounds
  • hasAnchoringBounds
  • useTransparentBounds
  • hasTransparentBounds

Außerdem sind in Java 1.5 folgende Methoden neu:

  • toMatchResult
  • hitEnd
  • requireEnd
  • usePattern
  • toString

Die folgende statische Methode gab es in Java 1.4.2 noch nicht:

  • Pattern.quote

Unterschiede bezüglich Unicode zwischen Java 1.4.2 und 1.5.0

Zwischen den Versionen 1.4.2 und 1.5.0 wurden folgende Änderungen vorgenommen:

  • Java 1.5 unterstützt Unicode Version 4.0.0, bei Java 1.4.2 war das noch Unicode Version 3.0.0. Diese Änderung betrifft Dinge wie die Definition von Zeichen (bei Unicode 3.0.0 gab es noch keine Codepunkte über \uFFFF), deren Eigenschaften und die Definition von Unicode-Blockbereichen.
  • Die Syntax für Unicode-Blocknamen mittels ˹\p{...}˼ und ˹\P{...}˼ wurde verbessert. (Die Liste der unterstützten Blöcke und deren Namen findet man in der Java-Dokumentation zu Character.UnicodeBlock.)

    In Java 1.4.2 galt die Regel »Offizieller Name des Unicode-Blockbereichs ohne Leerzeichen und mit einem ›In‹ davor«. Dies ergab Bezeichnungen wie \p{InHangulJamo} oder \p{InArabicPresentationForms-A}.

    In Java 1.5 sind zwei neue Arten von Namen für Unicode-Blockbereiche dazugekommen. Bei der einen wird dem offiziellen Blocknamen einfach ein ›In‹ vorangestellt, also \p{InHangulJamo} und \p{InArabicPresentationForms-A}. Bei der anderen setzt man das ›In‹ vor den Java-Namen des Blocks (diesen erhält man, indem man die Leerzeichen und Bindestriche des offiziellen Namens durch Unterstriche ersetzt), man kann also auch schreiben: \p{InHangul_Jamo} und \p{InArabic_Presentation_Forms_A}.

  • In Java 1.4.2 gab es einen abstrusen Fehler: Bei den Blocknamen Arabic Presentation Forms-B und Latin Extended-B musste man statt dem »B« am Ende »Bound« schreiben, also \p{InArabicPresentationForms-Bound} und \p{InLatinExtended-Bound}.
  • In Java 1.5.0 werden in regulären Ausdrücken die Methoden isIrgendwas der Character-Klasse unterstützt (siehe Besondere »Java«-Eigenschaften).

Unterschiede zwischen Java 1.5.0 und 1.6

Bis zur zweiten Beta-Version von Java 1.6 sind nur zwei kleine Änderungen dazugekommen, die reguläre Ausdrücke betreffen:

  • Die Unicode-Kategorien Pi und Pf werden jetzt unterstützt.
  • Das Konstrukt ˹\Q...\E˼ funktioniert in Java 1.6 auch innerhalb von Zeichenklassen.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Reguläre Ausdrücke bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:
   

Copyright der deutschen Ausgabe © 2008 by O’Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Reguläre Ausdrücke" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstr. 81, 50670 Köln