Torwächter: String aus Text extrahieren

Hallo zusammen,

nachdem ich nun den Aufbau einer ISBN kenne (danke an Bernhard) sieht es so aus : X-XXX-XXXXX-X (1-3-5-1)
Wie kann ich nun diese Kombination aus einem Text extrahieren:

TTTTTTTTTTTTTTTTexTTTTTTTTTTTTTTT1-333-55555-1TTTTTTTTTTextTTTTTTT

nach dem Prinzip wie $zeile =~ s/denSyntaxderNummer/<a href.../g;

Aber wie mache ich eine Syntaxerkennung ?
(ich brauche den Syntax,da es verschiedene Nummern sind)

Vielen Dank im Voraus

  1. Hi,

    Aber wie mache ich eine Syntaxerkennung ?
    (ich brauche den Syntax,da es verschiedene Nummern sind)

    nein, Du brauchst ein Muster - und genau dafür sind Regular Expressions da. Stelle Dir anhand von

    perldoc perlre

    zusammen, wie das Muster für ISBN-Nummern zu definieren ist (beispielsweise gibt es exakte Positionen für Bindestriche, und dazwischen sind - was für Zeichen?), und wende es quasi wie in dem von Dir genannten Beispiel an. Eigentlich ist es sehr einfach. Um die gefundene Nummer mit in den Link übernehmen zu können, verwende einfach runde Klammern.

    Cheatah

  2. X-XXX-XXXXX-X (1-3-5-1)
    Wie kann ich nun diese Kombination aus einem Text extrahieren:

    Die regular expression für (genau) diese Kombination aus Ziffern und Bindestrichen lautet \d-\d{3}-\d{5}-\d
    Die konkrete Implementierung ist nun noch abhängig von der von Dir gewünschten Darstellung (Text beibehalten, nur ISBNs als Links; ISBNs ohne umgebenden Text als Links; ...).

    1. Soweit sehr gut, mit s/... funzt es einwandfrei, doch nun das nächste Problem: ich möchte gleich testen, ob die ISBN richtig ist.
      Das ist mir aber nur möglich, wenn ich auf die einzellnen Teile zugreifen kann (z.B. $1, $2...) doch trotz zahlreicher versuche und etlichem durchlesen der SelfHtml Beschreibung konnte ich keine Lösung finden.
      Vielleicht kannst du mir ein drittesmal helfen :)

      Greetings
      Torwächter

      PS: dank dir wird meine Seite bald mehr können wie die von amazon.de ;)

      1. Habs nun rausgefunden.
        Ich danke dir, dass du mir bis hierher geholfen hast.

        Greetings
        Torwächter