Mehrbuchstabige »Anführungszeichen«

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

Unter Einführung in reguläre Ausdrücke hatte ich kurz über HTML-Tags gesprochen, und zwar über die Sequenz ...<B>sehr</B>..., die ein Browser als fett gedrucktes »sehr« darstellen wird. Der Versuch, nach einem Muster wie <B>...</B> zu suchen, ist völlig analog zur vorherigen Vorgehensweise, nur bestehen die »Anführungszeichen« hier aus mehreren Zeichen: <B> und </B>. Wie vorhin mit den Gänsefüßchen ergeben sich auch hier Probleme mit ˹.*˼, wenn auf einer Zeile mehrere Strings in solchen Tags vorkommen, wie etwa bei:

...<B>Millionen</B> und <B>Abermillionen</B> von Sonnen...

Wenn wir ˹<B>.*</B>˼ benutzen, geht das ˹.*˼ bis zum Ende der Zeile und das nachher einsetzende Backtracking nur bis zum letzten </B> zurück, statt zu dem, das zum ˹<B>˼ am Anfang des Matchings gehört.

Weil das schließende Klammersymbol aus mehreren Zeichen besteht, können wir das Problem nicht einfach mit einer Zeichenklasse lösen. So etwas Dummes wie ˹<B>[^</B>]*</B>˼ kann nicht funktionieren. Eine Zeichenklasse steht immer nur für ein einziges Zeichen und kann nicht auf eine Sequenz wie die gesuchte </B>-Sequenz passen. Lassen Sie sich von der gewählten Darstellung von ˹[^</B>]˼ nicht in die Irre führen. Das ist eine ganz normale Zeichenklasse, die auf nur ein Zeichen passt, nämlich auf eines, das kein <, >, / oder B ist. Es ist exakt dieselbe Klasse wie etwa ˹[^/<>B]˼ und sicherlich ungeeignet, um »irgendetwas, aber nicht </B>« auszudrücken. Mit einem Lookahead-Konstrukt kann man verlangen, dass ab einer bestimmten Position im String kein </B> vorkommen darf; Sie werden das in Nicht-gierige Quantoren sehen.

  

<< 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