Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_replace ersetzte Zeichenkette oder länge der Ersetzten Zeichen auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Der Punkt in einem regulären Ausdruck matched nicht nur bei Zahlen.
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #17
      Zitat von Asipak Beitrag anzeigen
      Der Punkt in einem regulären Ausdruck matched nicht nur bei Zahlen.
      Okay. Stimmt... War etwas ungenau

      Also dann so:
      PHP-Code:
      preg_replace('/{B (\d)}/''{Buch ${1}}''{B 5}'

      Kommentar


      • #18
        Jetzt matchst DU nur einstellige Zahlen (Ziffern). Suboptimal würde ich sagen.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #19
          Und das ganze mit mehrstelligen Ziffern, aber mindestens einer
          PHP-Code:
          preg_replace('/{B (\d+?)}/''{Buch ${1}}''{B 5}'

          Kommentar


          • #20
            Dann ist das Fragezeichen aber unnütz.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #21
              muss das weg? Ich habe die erfahrung gemacht dass, wenn ich das Fragezeichen weglasse, der anfängt, mir das größtmögliche wegzufressen, unter umständen ist dann alles weg...

              Kommentar


              • #22
                Das hat was mit der Gier des Ausdrucks zu tun, das Fragezeichen kehrt diese um. In diesem Fall ist das kein Problem, da du ja nach den Ziffern direkt ein bestimmtes Zeichen verlangst, dass das Muster beendet.
                [URL]http://hallophp.de[/URL]

                Kommentar


                • #23
                  verstehe. Das würde bedeuten, dass ich das Fragezeichen nur brauche, wenn nach einer beliebigen anzahl von unbekannten zeichen kein weiteres, von mir näher definiertes Zeichen, folgt.

                  Kommentar


                  • #24
                    Tja, ein typisches Beispiel dafür ist zum Beispiel der Einsatz von regulären Ausdrücken zur Interpretation von BBCode.
                    Code:
                    /\[b\](.*)\[\/b\]/
                    Dort wäre der Einsatz eines Fragezeichens hinter dem verwendeten Quantifier (*) sinnvoll, da es ja sein kann, dass der Text noch weitere schließende [/b] - Tags enthält und der Punkt schließt schließlich nicht aus, dass auch [/b] zwischen den [b]-Tags stehen kann. Kehrst du aber die Gier um, wird bei der ersten Übereinstimmung bereits abgebrochen.

                    Bei deinem Ausdruck werden dagegen lediglich Ziffern verlangt, dass folgende Zeichen } ist aber nicht bestandteil der Zeichenklasse \d. Von daher werden dir dort keine Probleme entstehen.
                    [URL]http://hallophp.de[/URL]

                    Kommentar


                    • #25
                      Allgemeiner ausgedrückt: auch wenn ein Ausdruck gierig ist, muss ja das Pattern passen.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #26
                        Vielen vielen vielen dank.
                        Ich habe jetzt
                        1. Richtig viel gelernt, und
                        2. Auch noch mein Problem gelößt.

                        So solls doch sein...

                        Gruß,
                        emasch

                        Kommentar


                        • #27
                          Wie wärs mit
                          PHP-Code:
                          $test '{B 3}';
                          $ergebnis preg_replace('/\{B\s(?=[0-9]*?\}{1})/''{Buch '$test);
                          echo 
                          $ergebnis
                          Oder wäre das zu kompliziert?^^

                          Kommentar


                          • #28
                            Etwas übertrieben, gleich mit Assertions rumzubasteln. Die Kombination aus [0-9]* und {1} ist auch eher gut gemeint als gut gemacht.
                            [URL]http://hallophp.de[/URL]

                            Kommentar


                            • #29
                              Zitat von Asipak Beitrag anzeigen
                              Etwas übertrieben, gleich mit Assertions rumzubasteln. Die Kombination aus [0-9]* und {1} ist auch eher gut gemeint als gut gemacht.
                              Ich arbeite mit RegEx erst seit kurzen, darum bitte ich solche Schlampigkeiten zu verzeihen. Wie wäre denn die optimale Lösung? Die {1} ist übrigens auf das } bezogen. Aber dafür müsste ich das in Klammern setzen, richtig? :-/

                              Kommentar


                              • #30
                                Ich sehe Assertions hier auch nicht als Anwendungszweck. Schließlich gibt es einen klar spezifizierten Ausdruck mit gerademal einer dynamischen Komponente, die sogar noch typisiert ist. Besser gehts für einen normalen reg. Ausdruck doch gar nicht.

                                So sähe meine Lösung aus:
                                PHP-Code:
                                $ergebnis preg_replace('#\{B\s+(\d+)\}#''{Buch \1}'$test); 
                                [COLOR="#F5F5FF"]--[/COLOR]
                                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                                [COLOR="#F5F5FF"]
                                --[/COLOR]

                                Kommentar

                                Lädt...
                                X