Re: @Alle - Bitte um Hilfe - 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 Donnerstag, 17.Mai.2001, 10:34.
    Re: @Alle - Bitte um Hilfe

      regular expressions halt - eine welt für sich ;-)


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Claus Christmeier (598 Beiträge) am Mittwoch, 16.Mai.2001, 12:06.
    @Alle - Bitte um Hilfe

      Hallo "bp"ler,

      wer kann mir bitte den Befehl sagen für

      "Ersetze 'q' durch 'w' aber nur wenn vor 'q' kein 'a' steht"

      $feld =~ /q.../w.../g; oder so ähnlich?
      

      Vielen Dank für eine Antwort

      Gruß
      Claus

     Antworten

    Beitrag von Stefan Skalla (86 Beiträge) am Mittwoch, 16.Mai.2001, 16:15.
    Re: @Alle - Bitte um Hilfe

      Nicht besonders schön, ist wahrscheinlich nur eine Übergangslösung: Im ersten Schritt wird jedes Auftreten der Zeichenkette "aq" durch eine spezielle Zeichenkette ersetzt, die sonst nicht vorkommt. Ich hab einfach mal "xx" genommen, je nach Kontext kann man ja auch irgendwelche Sonderzeichen verwenden. Anschließend werden alle Vorkommen von "q" durch "w" ersetzt und die Ersetzung der Zeichenkette "aq" wieder rückgängig gemacht.
      $string =~ s/aq/xx/g;
      $string =~ s/q/w/g;
      $string =~ s/xx/aq/g;
      
      Wer sich mit der Syntax für reguläre Ausdrücke auskennt, kriegt das wahrscheinlich auch in einem Zug hin...

      Gruß,
      Stefan

     Antworten

    Beitrag von fb (406 Beiträge) am Mittwoch, 16.Mai.2001, 16:23.
    Re: @Alle - Bitte um Hilfe

      Hallo Claus,

      Das müsste gehen:

      $feld =~ s/q/w/ if $feld !~ "aq";
      

      habs aber nicht getestet

      fb

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 16.Mai.2001, 17:39.
    Re: @Alle - Bitte um Hilfe

      Noch ein Vorschlag: ;-)

      $feld=~ s/([^a])q/$1w/g;
      

      [^a] bedeutet "nicht a" - falls die ersetzung zutrifft steht hier aber irgendein anderer buchstabe, deshalb muessen wir uns den merken (mit klammern) und bei der ersetzung mit $1 dazumachen... ungefaehr klar? ;-)

     Antworten

    Beitrag von fb (406 Beiträge) am Mittwoch, 16.Mai.2001, 23:30.
    Re: @Alle - Bitte um Hilfe

      ;-)
      die kleinigkeiten wieder, bis [^a] bin ich auch schon gekommen das $1 ist ja genial und so einfach oder auch genial einfach :-)

      fb

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 17.Mai.2001, 10:34.
    Re: @Alle - Bitte um Hilfe

      regular expressions halt - eine welt für sich ;-)

     Antworten

    Beitrag von Claus Christmeier (598 Beiträge) am Donnerstag, 17.Mai.2001, 12:13.
    Re: @Alle - Bitte um Hilfe

      Hallo Leute,

      find ich toll von Euch und bedanke mich herzlich für Euere Antworten (Stefan Skalla, fb und Christoph).

      Leider ist aber der gewünschte Erfolg noch nicht eingetreten - schaut mal:

      Code:

      $feld1 = "q1q2aq3q4q5qq";
      out "$feld1<br>";
      $feld1=~ s/([^a])q/$1w/g;
      out $feld1;
      

      ergibt:

      q1q2aq3q4q5qq
      q1w2aq3w4w5wq

      Wo bitte ist denn da noch der Haken?

      Bedanke mich für eine Antwort.

      Gruß
      Claus

     Antworten

    Beitrag von Stefan Skalla (86 Beiträge) am Donnerstag, 17.Mai.2001, 13:16.
    Re: @Alle - Bitte um Hilfe

      Hi Claus,
      also die fehlende Ersetzung am Wortanfang kommt wahrscheinlich dadurch, dass durch den Ausdruck ([^a])q nur die q's ersetzt werden, vor denen tatsächlich mindestens noch ein weiteres Zeichen (außer einem a) steht. Man kann jetzt sogenannte Alternativen bei der Suche angeben:
      $feld1=~ s/([^a])q|^q/$1w/g;
      
      Das "|" heißt soviel wie "oder", das ^ vor dem q bedeutet, dass auch q's am Wortanfang ersetzt werden sollen. Ich hab's probiert, scheint zu funktionieren. Was allerdings mit dem "qq" am Ende los ist, weiß ich auch noch nicht. Muss nochmal nachdenken...

      Ciao,
      Stefan

     Antworten

    Beitrag von Stefan Skalla (86 Beiträge) am Donnerstag, 17.Mai.2001, 13:32.
    Re: @Alle - Bitte um Hilfe

      Wenn ich nur verstehen würde, wie dieser Automat arbeitet ... Also das witzige ist, dass aufeinanderfolgende q's nicht ersetzt werden. Wenn z.B. gfhgfqqqhgfhg bearbeitet wird, kommt als Ergebnis gfhgfwqwhgfhg heraus. Hier muss mal wieder der Christoph ran...
      Wenn Du es dringend brauchst, führe die Ersetzung einfach zweimal aus:
      $feld1 = "q1q2aq3q4qqqqq5qq";
      out "$feld1<br>";
      $feld1=~ s/([^a])q|^q/$1w/g;
      $feld1=~ s/([^a])q|^q/$1w/g;
      out $feld1;
      
      Das klappt. (Perl-Profis und Herren der regulären Ausdrücke, bitte verzeiht mir...:-))

      Ciao,
      Stefan

     Antworten

    Beitrag von Claus Christmeier (598 Beiträge) am Donnerstag, 17.Mai.2001, 13:45.
    Re: @Alle - Bitte um Hilfe

      Hallo Stefan,

      vielen Dank für Deine Hilfe - jetzt klappt´s.

      Mal schaun, ob der Christoph was dazu zu sagen hat?

      Aber Du kennst ja den Spruch, "gibt man ihm den kleinen Finger, will er gleich die ganze Hand", denn ich habe auch noch folgendes Problem:

      lasse ALLE Leerzeichen verschwinden, die zwischen > und < stehen, egal wieviel es sind.

      Fällt Dir dazu etwas ein?

      Danke im Voraus.

      Gruß
      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 17.Mai.2001, 14:28.
    Re: @Alle - Bitte um Hilfe

      muß ich mich auch mal probieren:

      $feld =~ s/> ?</></;
      

      vielleicht stimmts sogar ;-)

      Sander

     Antworten

    Beitrag von Claus Christmeier (598 Beiträge) am Donnerstag, 17.Mai.2001, 14:48.
    Re: @Alle - Bitte um Hilfe

      Hallo Sander,

      vielen Dank für Deinen Tipp.

      Wenn man statt ? ein * nimmt und am Ende noch ein g setzt, dann klappt´s

      Danke

      Gruß
      Claus

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 18.Mai.2001, 15:30.
    Re: @Alle - Bitte um Hilfe

      Tja, regex, eine eigene Welt (sagte ich das schon?) ;-)

      hab nach viel rumprobieren folgende loesung gefunden:

      $feld1=~ s/(^|[^a])(q+)/$1.("w" x length $2)/ge;
      

      gefaellt mir nicht 100%, aber funktioniert... vielleicht gehts auch nicht anders, weiss nicht... ansonsten kann man nur

      http://www.amazon.de/exec/obidos/ASIN/3897211076/baseportal-21

      empfehlen... ;-)

     Antworten


     
 Liste der Einträge von 62100 bis 62250: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.08s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!