Ankündigung

Einklappen
Keine Ankündigung bisher.

Regex - bestimmtes Muster erkennen

Einklappen

Neue Werbung 2019

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

  • Regex - bestimmtes Muster erkennen

    Hallo,

    ich versuche schon seit einiger Zeit einen regulären Ausdruck zu schreiben, der Algorithmen für den Zauberwürfel erkennt. So ein Algorithmus kann z.B. so aussehen:
    F U B2 R' L' D (Die Buchstaben F, B, U, D, R oder L mit einem ', einer 2 oder garnichts)
    Mein Ausdruck sollte quasi so aussehen:

    (Leerzeichen, Zeilenumbruch o.ä.)
    ( (F,B,U,D,R oder L) (',2 oder garnix) (eventuell Leerzeichen) ) {3 mal oder öfters}
    (Leerzeichen, Zeilenumbruch o.ä.)

    sieht so aus, funktioniert aber nicht:
    Code:
    #(\s|\r\n?|\n?)(((F|B|R|L|U|D)('|2){0,1}(\s){0,1}){3,})(\s|\r\n?|\n?)#
    Code:
    <a href=\"http://alg.garron.us/?alg=$2&animtype=solve\" target=\"_blank\">$2</a>
    Aber leider scheint der Code nur in eine Dauerschleife zu führen.

    Hoffentlich könnt ihr mir helfen!

    MFG, Felk


    EDIT: Hab vergessen zu erwähnen, wo die Dauerschleife wahrscheinlich entsteht, hier einfach mal der ganze Code-Snippet (das wichtige ist rot):
    Code:
      $pattern = array(
                       "#\[alg=([2-7]{1})\](.*?)\[\/alg\]#si",
                       "#\[alg\](.*?)\[\/alg\]#si",
                       "#(\s|\r\n?|\n?)(((F|B|R|L|U|D)('|2){0,1}(\s){0,1}){3,})(\s|\r\n?|\n?)#"
                       );
    
      $replace = array(
                       "<a href=\"http://alg.garron.us/?alg=$2&animtype=solve&cube=$1x$1x$1\" target=\"_blank\">$2</a>",
                       "<a href=\"http://alg.garron.us/?alg=$1&animtype=solve\" target=\"_blank\">$1</a>",
                       "<a href=\"http://alg.garron.us/?alg=$2&animtype=solve\" target=\"_blank\">$2</a>"
                       );
    
    
    	while(preg_match($pattern[0], $message) or preg_match($pattern[1], $message) or preg_match($pattern[2], $message)) // Dauerschleife hier?
    	{
    		$message = preg_replace($pattern, $replace, $message);
    	}
    www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)

  • #2
    Aber leider scheint der Code nur in eine Dauerschleife zu führen.
    Wer wo was?
    [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


    • #3
      Sorry, hab meinen Fehler eingesehen. Habe wichtige Codeteile vergessen, deshalb ist der Beitrag nun editiert
      www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)

      Kommentar


      • #4
        Ohne mir die Pattern näher angesehen zu haben: Was ist denn das für eine seltsame Konstruktion mit while, zwei preg_match und preg_replace? Ich würde erstmal versuchen, das in einem Abwasch mit preg_replace zu erledigen. Da die while-Schleife irgendwie überhaupt keinen Sinn macht und du preg_replace eigentlich schon korrekt anwendest, reicht es vielleicht auch einfach, die Schleife wegzulassen.
        [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
        [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

        Kommentar


        • #5
          Könntest du ein Beispiel posten, was du als Eingabe hast und was du als Ausgabe erwartest? Das kommt mir so alles etwas spanisch vor.

          Kommentar


          • #6
            @fab: Ich muss zugeben, das hatte ich so vorgegeben. Ich hab einfach ein Plugin für MyBB umgeschrieben. Anscheinend wollte der Autor damit alle BB-Tags ersetzen und nicht nur eines. Ich hab ihm einfach mal geglaubt.

            @mermshaus: Ich habe garkeine Ausgabe, weil die Seite einfach nur lädt. Wenn ich, wie es fab vorgeschlagen habe, das preg_replace nur 1x ausführe, bekomme ich das:
            Code:
            Hallo
            [alg]F R U R' U' F'[/alg]
            Test 4x4:
            [alg=4]f R U' l b B'[/alg]
            
            Und:
            F R U R' U' F'
            wird zu:
            Code:
            Hallo<br />
            <a href="http://alg.garron.us/?alg=<a href="http://alg.garron.us/?alg=F R U R' U' F'&animtype=solve" target="_blank">F R U R' U' F'</a>&animtype=solve" target="_blank"><a href="http://alg.garron.us/?alg=F R U R' U' F'&animtype=solve" target="_blank">F R U R' U' F'</a></a><br />
            
            Test 4x4:<br />
            <a href="http://alg.garron.us/?alg=f R U' l b B'&animtype=solve&cube=4x4x4" target="_blank">f R U' l b B'</a><br />
            <br />
            Und:<a href="http://alg.garron.us/?alg=F R U R' U' F'&animtype=solve" target="_blank">F R U R' U' F'</a>


            Also erkennt er es, zerschiesst aber irgendwie den restlichen Code

            EDIT: Aha, anscheinend beachtet er die verpflichtenden whitespaces nicht O_o
            www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)

            Kommentar


            • #7
              und was du als Ausgabe erwartest
              [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


              • #8
                Ah okay, T'schuldigung.

                Sowas wie:
                Code:
                <a href="http://alg.garron.us/?alg=F R U R' U' F&animtype=solve" target="_blank">F R U R' U' F'</a><br />
                Das ganze soll halt dafür sorgen, dass man keinen [alg]-Tag braucht, sondern dass Algorithmen automatisch verlinkt werden
                www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)

                Kommentar


                • #9
                  der Algorithmen für den Zauberwürfel erkennt
                  Ich hielte ja ein einfaches Attribut für wesentlich sinnvoller.

                  Code:
                  [alg type="rubik"]Bl;a bla [/alg]
                  Wenn ich jetzt F' U schreibe, muss nicht zwingend ein Würfelcode gemeint sein
                  [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


                  • #10
                    Was? Es sollen doch Algorithmen ohne jeglichen BB-Code erkannt werden.
                    Ebenso wie dieser Link klickbar sein wird, ohne dass ich ihn selbst verlinkt habe: www.example.com

                    Und BB-Code Attribute sind mir zu kompliziert, da müsste ich mich erst mit XML-Parsern auseinandersetzen. Mir reicht ja das eine Attribut im Tag selbst.

                    EDIT: In einem Würfelforum ist es aber sehr wahrscheinlich, dass bei F U U ein Algorithmus gemeint ist
                    www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)

                    Kommentar


                    • #11
                      Die richtige Antwort wäre F' U2 gewesen
                      [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


                      • #12
                        So wie es hier wahrscheinlich ist, dass PR den Page Rank re​präsentiert?

                        Kannst du mal bitte herausstellen, wo sich deine Ausgabe von der erwarteten unterscheidet? Ich erkenne es nicht...
                        [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                        [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                        Kommentar


                        • #13
                          @nikosch: Anspielung auf
                          Ich weiß, dass es F U2 heißen würde, ich bin ja kein Anfänger mehr

                          @fab: Der Algorithmus wird richtig erkannt, allerdings werden anscheinend die whitespaces ignoriert, die am anfang und am Ende sein sollen, weshalb die Algorithmen in den bereits geparsten [alg]-Tags einfach nochmal geparsed werden
                          Sieht man daran, dass im href-Tag auf einmal ein neues <a> aufgeht.
                          www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)

                          Kommentar


                          • #14
                            wird zu:
                            Code:

                            Hallo<br />
                            <a href="http://alg.garron.us/?alg=<a href="http://alg.garron.us/?alg=F R U R' U' F'&animtype=solve" target="_blank">F R U R' U' F'</a>&animtype=solve" target="_blank"><a href="http://alg.garron.us/?alg=F R U R' U' F'&animtype=solve" target="_blank">F R U R' U' F'</a></a><br />
                            Kein Wunder bei einer While Schleife und dem Ursprungscode im Result.
                            [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


                            • #15
                              (\s|\r\n?|\n?)
                              == ODER vielleicht ein Zeichen.
                              [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