Re: Looking ahead and looking behind bei reguläre Ausdrücken - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 14.Dezember.2001, 16:33.
    Re: Looking ahead and looking behind bei reguläre Ausdrücken

      Konnte jetzt nich ganz rauslesen, ob Du's schon gelöst hast, hier eine Möglichkeit:

      $text=~ s/<li>(.*?)(?=<li>)/.../gi;
      

      sollte das eigentlich machen... Also kein lookbehind, sondern ein lookahed, warst beim ersten Mal schon fast dran ;-)

      Ích vermute aber, Du wolltest auch den _letzten_ Fall mit erwischen, der z.b. bei folgendem HTML-Code nicht dabei gewesen wäre:de:

      <ul><li>blabla<li>blubbb<li>...</ul>
      

      Also beim letzten hättest Du _keinen_ Treffer... Deshalb wolltest Du das lookbehind (denk ich mal). ICh würds so machen:

      $text=~ s/<li>(.*?)(?=<li>|</ul>|</ol>)/.../gi;
      


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Juri (43 Beiträge) am Donnerstag, 13.Dezember.2001, 12:53.
    Looking ahead and looking behind bei reguläre Ausdrücken

      Bei regulären Ausdrücken (bei mir mit s///;) wollte ich Look behind verwenden. Dies gehört meines Wissens zu den erweiterten Ausdrücken. Da braucht man dann s///x;

      Dies funktionierte jedoch nicht.

      Kann mir da jemand helfen?
      Sind diese abgeschaltet oder in dieser Perl-Version nicht implementiert?
      Oder habe ich mich einfach mit der Syntax vertan?

      Beispiel:

      $_[0] =~ s/(?=<li>)(.*?)<li>/$2\r\l/xgi;
      

      Juri

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 13.Dezember.2001, 14:27.
    Re: Looking ahead and looking behind bei reguläre Ausdrücken

      Hui, Du fährst ja Geschütze auf... ;-) Also bei den regulären Ausdrücken is alles drin, was in Perl 5.6 so drin is... Das "x" brauchst Du für die erweiterten Sachen aber nicht, das "x" steht eigentlich für was anderes (Du kannst dann z.B. Spaces in den regex benutzen). Wo soll bei Deiner regex denn lookbehind stehen? Das (?=...) ist ein "zero-width positive _lookahead_ assertion". Lookbehind wäre (?<=...) (beachte da <-zeichen)

      Ich bezweifle aber, dass Du das brauchst, was willst du denn genau machen?

     Antworten

    Beitrag von Juri (43 Beiträge) am Donnerstag, 13.Dezember.2001, 14:58.
    Re: Looking ahead and looking behind bei reguläre Ausdrücken

      Danke für Deine Antwort. Ich werd mir mal nochmals (das .... mal) www.perldoc.com durchlesen. Bei der erweiterten Syntax bin ich ja schon etwas durcheinander gekommen. Da ich dann auch noch ständig Zeichen drinnen habe, die ich mit \ maskieren muß, schleuderts mich manchmal ;-).

      Tja, was brauch ich:

      Ich hab vereinfacht dargestellt einen Konstrukt mit folgendem Aufbau:

         '<li>nzeichen<li>nzeichen<li>nzeichen<li>'
      

      Meine '<li>' klammern mir meine beliebigen Zeichenfolgen.
      Mit dem '<li>nzeichen' muß ich etwas machen, wobei die 'nzeichen' vom nächsten '<li>' abgegrenzt werden.

      Wenn ich nun nach "<li>(.*?)<li>" suche, kriege ich nur jedes zweite 'nzeichen'.

      Juri

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 14.Dezember.2001, 16:33.
    Re: Looking ahead and looking behind bei reguläre Ausdrücken

      Konnte jetzt nich ganz rauslesen, ob Du's schon gelöst hast, hier eine Möglichkeit:

      $text=~ s/<li>(.*?)(?=<li>)/.../gi;
      

      sollte das eigentlich machen... Also kein lookbehind, sondern ein lookahed, warst beim ersten Mal schon fast dran ;-)

      Ích vermute aber, Du wolltest auch den _letzten_ Fall mit erwischen, der z.b. bei folgendem HTML-Code nicht dabei gewesen wäre:de:

      <ul><li>blabla<li>blubbb<li>...</ul>
      

      Also beim letzten hättest Du _keinen_ Treffer... Deshalb wolltest Du das lookbehind (denk ich mal). ICh würds so machen:

      $text=~ s/<li>(.*?)(?=<li>|</ul>|</ol>)/.../gi;
      

     Antworten

    Beitrag von Juri (43 Beiträge) am Freitag, 14.Dezember.2001, 16:55.
    Re: Looking ahead and looking behind bei reguläre Ausdrücken

      @CB:
      

      Danke für Deine schöne Antwort!

      Werd' wohl meine Lösung etwas damit verschönern ;-)

      Das wollte ich Dir ja schon so gegen 14.30 Uhr schreiben, aber da war bp ziemlich down :((

      Hoffe, Du bist nicht ins Schwitzen gekommen

      Gruß Juri

     Antworten

    Beitrag von Juri (43 Beiträge) am Donnerstag, 13.Dezember.2001, 15:47.
    Re: Looking ahead and looking behind bei reguläre Ausdrücken

      Da das von mir versuchte (viele Versuche!) mit Syntaxfehler und ähnlichem geendet hat (ohne extandet regular expressions) hat alles geklappt, bin ich da etwas durcheinander gekommen, wie man denn nun wohin schaut:

      Für das eigentliche Problem (nicht das oben beschreiben, denn das hab mittlerweile anders gelöst)genötige ich ein:

         (?<!pattern) 
      

      also ein zero-width negative look-behind assertion.

      Das hab ich nicht zum Laufen gebracht.

      Das mit dem X hab ich von der Seite

      http://www.perldoc.com/perl5.6.1/pod/perlop.html#s-PATTERN-REPLACEMENT-egimosx

      Juri

     Antworten


     
 Liste der Einträge von 52950 bis 53100:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.07s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!