[REGEX] eine Backreference daraus machen?

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

  • [REGEX] eine Backreference daraus machen?

    Hey,

    bin ja nicht der Reguläre Ausdrücke Profi daher seh ich wohl auch meinen Fehler nicht so wirklich.....

    Ziel meines Ausdruckes ist es ein Zitat vom Anfangstag bis zum Endtag zu maskieren.....Den letzteren Tag möchte ich über den ersteren erzeugen.......

    Bsp:
    [ quote ]sdfklsfjslkfjslkfjslkfjslfslkvmx, fflkslfkslfk[ /quote ]

    Den Ausdruck hab bereits so erzeugt und ein wenig umgewandelt um damit meinen zweiten als Backreference zu erzeugen.....

    Code:
    !\[(\quote\])(.*)\[/quote\]!is
    Das ganze matcht nun auf das was ich will und der Unterausdruck ist quote]
    und diesen sollte ich doch eigentlich auch erzeugen können nur hier scheitere ich

    Das hier hab ich versucht:
    Code:
    \[(\quote\])(.*)\[/\\1
    Und hier werden keine Übereinstimmungen gefunden, seh meinen Fehler nicht
    [color=blue]MfG Payne_of_Death[/color]

    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
    [color=red]Merke:[/color]
    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

    Murphy`s Importanst LAWS
    Jede Lösung bringt nur neue Probleme
    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

  • #2
    PHP-Code:
    $text '[zitat]sdfklsfjslkfjslkfjslkfjslfslkvmx, fflkslfkslfk[/zitat]';
    preg_match('%\\[(.*)\\](.*)\\[/\\1\\]%U'$text$treffer);
    print_r($treffer); 
    einfach mal das manual richtig lesen?
    und nich wahllos backslashes verteilen wo keine hingehören

    den ersten (.*) kannst du natürlich auch durch (zitat) ersetzen, dann matched das ding nur für diesen einen bb-code
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Original geschrieben von mrhappiness
      einfach mal das manual richtig lesen?
      und nich wahllos backslashes verteilen wo keine hingehören
      Naja ich habe an einen Unterausdruck ala quote] gedacht daher ergaben sich diese zusätzlichen Escape Zeichen......

      Sorry ich hab nicht die Erfahrung damit.....

      merci
      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Kommentar


      • #4
        hmm ich rall die Backreferences nicht so ganz

        wenn ich sowas habe:
        [ quote ]sfsdlfksdlfksdlfsklfslf sdgfsfsf[ /quote ] kajdklad
        [ quote="blubb" ]sfsdfsdfsdfsfs sfsfsfs[ /quote ] dadaad

        und dies dann via
        Code:
        !\[(quote)](.*)\[/\1\]|\[quote=".*"\](.*)\[/quote\]!iU
        herleiten dann kann ich aus dem ersteren Teil nicht mehr referenzieren?
        erst wenn ich nachdem | wieder einen Subausdruck mache kann ich darauf zurückgreifen:

        Code:
        \[(quote)](.*)\[/\1\]|\[(quote)=".*"\](.*)\[/\3\]
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #5
          hmm ich rall die Backreferences nicht so ganz
          eine backreference entsteht, wenn du ein subpattern erstellst, also einen bereich in ( ) faßt .... von links nach rechts bei der öffnenden klammer gezählt - das weißt du sicher ...

          ich würde dir gern helfen, ich find ja regexp so toll , aber ehrlich gesagt weiß ich nicht so recht, was dein problem ist ... kannst du die sache mal auf den punkt formulieren:

          ich möchte ...

          du kannst dir das | sparen, indem du ein eventuell vorhandenes =quoted_from in ( ) setzt und ein ? dranhängst ... oder, vielleicht besser, indem du (.*) angibst, so daß du bei nicht vorhandensein trotzdem eine untergruppe (hoffentlich) erzeugst, so daß die nummerierung nicht durcheinanderkommt ...

          was willst du machen?
          Zuletzt geändert von derHund; 11.10.2004, 15:41.
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Original geschrieben von derHund
            was willst du machen?
            OffTopic:
            ich weiß es, aber ich sag's nicht
            da versucht anscheinend jemand, das vb oder was ähnliches nachzubauen
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              @Hundilein:

              Ich wollte alles vor dem | herleiten

              aus:
              Code:
              \[(quote)](.*)\[/\1\]|\[(quote)=".*"\](.*)\[/\3\]
              wollte ich:
              Code:
              \[(quote)](.*)\[/\1\]|\[\1=".*"\]\2\[/\1\]
              aber dies scheint nicht möglich zu sein, jedenfalls sind die Backreferences vor dem | nur dort verfügbar und nicht mehr im nachfolgenden Teil....

              Das rall ich nicht

              @Happy: Du hast indirekt recht
              Ich baue ein unter GPL stehendes Forum etwas um bzw. entferne in diesem Beispiel etwas sinnloses....
              [color=blue]MfG Payne_of_Death[/color]

              [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
              [color=red]Merke:[/color]
              [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

              Murphy`s Importanst LAWS
              Jede Lösung bringt nur neue Probleme
              Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
              In jedem kleinen Problem steckt ein großes, das gern raus moechte.

              Kommentar


              • #8
                ist ja auch irgendwie logisch

                du suchst nach einem muster oder nach einem anderen

                wenn er das erste muster nicht findet, also nach dem zweiten suchst, warum glaubst du, könntest du dort dann irgendwie einen teil des nicht gefundenen ersten musters referenzieren?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar

                Lädt...
                X