Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Frage zum Buch "Reguläre Ausdrücke" von Jeffrey Friedl

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.04.2001
    Beiträge
    62

    Frage zum Buch "Reguläre Ausdrücke" von Jeffrey Friedl

    Hallo Leute,

    ich habe eine Frage zum Buch Reguläre Ausdrücke, 2. Auflage (deutsch) von Jeffrey E. F. Friedl. Bin zwar erst bei Seite 70, habe aber da was festgestellt wo ich glaube, dass es sich um einen Fehler handelt. Konnte in der Errata keinen Hinweis dazu finden, desshalb frage ich einfach mal hier nach. Vielleicht haben ja einige die zweite Auflage.

    Ich zitiere Seite 68, Absatz drei:
    Wenn eine Wortgrenze eine Position ist, bei der auf der einen Seite \w passt und auf der anderen Seite \w nicht passt, dann koennen wir mit (?<!\w)(?=\w) einen Wortanfang und mit dem Gegenstueck (?=\w)(?<!\w) ein Wortende erkennen.

    Letzteres erscheint mir irgendwie falsch. Meiner Meinung nach muesste das Gegenstueck fuer Wortende so ausschauen: (?<=\w)(?!\w)

    Oder liege ich da falsch? Wuerde mich ueber eine Antwort freuen.

    ciao
    chrizel

  2. #2
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Ja du hast recht. Wolltest du das hören. Ich kanns dir noch mal sagen. Ja du hast recht. Ja du hast recht. Ja du hast recht. Ja du hast recht. Ja du hast recht. Ja du hast recht. Ja du hast recht. Ja du hast recht. Ja du hast recht. Ja du hast recht.

    Danke für den Hinweis. Schreibs an den Verlag und kassier die Belohnung für den verlorenen Fehler.
    Ein Fehler in 70 Seiten Regulären Ausdrücken ist allerdings nicht schlecht.

    Ich verwende zum Testen am liebsten Applets, dies zu Hauf im Internet gibt. Eines, dass ich besonders mag gibts hier: http://www.cis.upenn.edu/~matuszek/G...ex-tester.html
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  3. #3
    Registrierter Benutzer
    Registriert seit
    27.04.2001
    Beiträge
    62


    Danke, ich war mir nur nicht 100%ig sicher weil ich ja noch ziemlich am Anfang stecke und ich diese Lookahead/Lookbehind Ausdruecke evtl. nicht richtig verstanden habe, aber dann passt das ja... werd dem Verlag da mal ne kurze E-Mail mit dem Fehler schicken...

    Etwas komisch ist deine Antwort ja schon, aber so sind wohl die Oesterreicher...

  4. #4
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von chrizel


    Danke, ich war mir nur nicht 100%ig sicher weil ich ja noch ziemlich am Anfang stecke und ich diese Lookahead/Lookbehind Ausdruecke evtl. nicht richtig verstanden habe, aber dann passt das ja... werd dem Verlag da mal ne kurze E-Mail mit dem Fehler schicken...

    Etwas komisch ist deine Antwort ja schon, aber so sind wohl die Oesterreicher...

    Wäre nett, wenn Du kurz die Programme, Scriptsprachen etc. auszählst,
    welche den Ausdruck (?!\w) verstehen (unterstützen).
    Dann können die Anfänger, das auch mal testen.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  5. #5
    Registrierter Benutzer
    Registriert seit
    27.04.2001
    Beiträge
    62
    Zitat Zitat von Romanday
    Wäre nett, wenn Du kurz die Programme, Scriptsprachen etc. auszählst,
    welche den Ausdruck (?!\w) verstehen (unterstützen).
    Dann können die Anfänger, das auch mal testen.
    Ich weiss nicht welche diesen Ausdruck alle verstehen, ich kann dir nur sagen dass es in dem Fall um Perl geht. Kann sein dass das auch Ruby und andere Systeme mit PCRE-Support koennen.

    Edit: Ok, ich haette mir die Frage auch einfach selber beantworten koennen, indem ich es ausprobiert haette - das habe ich nun getan, hier also das Beispiel in perl:

    Code:
    $str = "hallo welt test";
    $str =~ s/\b/\|/g;
    print $str;
    \b steht fuer Wortgrenze. Das Programm gibt folgendes aus:

    |hallo| |welt| |test|

    Alle Wortgrenzen werden durch | ersetzt... also passts. Im Buch geht es darum einen Ersatz fuer \b anzugeben. (nur um das Prinzip von Lookahead/Lookbehind-Ausdruecken bzw. \b zu zeigen)... hier also das Beispiel mit dem Ausdruck aus dem Buch:

    Code:
    $str = "hallo welt test";
    $str =~ s/((?<!\w)(?=\w)|(?=\w)(?<!\w))/\|/g;
    print $str;
    Was natuerlich nicht korrekt funktioniert sondern nur Wortanfaenge matcht:

    |hallo |welt |test

    Nun meine Korrektur:

    Code:
    $str = "hallo welt test";
    $str =~ s/((?<!\w)(?=\w)|(?<=\w)(?!\w))/\|/g;
    print $str;
    Gibt richtig aus:

    |hallo| |welt| |test|
    Geändert von chrizel (19-07-2006 um 08:18 Uhr)

  6. #6
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von chrizel
    Ich weiss nicht welche diesen Ausdruck alle verstehen, ich kann dir nur sagen dass es in dem Fall um Perl geht. Kann sein dass das auch Ruby und andere Systeme mit PCRE-Support koennen.
    Ich weiß, Perl kann immer alles.
    Im Buch gibt es aber eine Vergleichsliste.
    Ich weiß jetzt nicht aus dem Kopf ob egrep ?= oder ?< versteht?
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •