Meddelande

Minska
No announcement yet.

Regular Expression

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Regular Expression

    Har liten kod som används att snickra sin egna sida och hur undra jag om hur man skall skriva för att få det som jag vill.

    Har en tagg där man ska kunna fylla i 4 värden i. Sista värdet ska vara left,right eller center. Ex: [box2=100px,#ffffff,#000000,center]

    Nu undrar jag hur man får in en ifsats som kollar om värde nr 4 är left,right eller center och väljer rätt replacekod. Se nedan hur jag vill det ska va men ej vet hur man skriver i reg Exp.

    Kod:
    regExp.Pattern = "\[box2=(.*?),(.*?),(.*?),(.*?)\]"
    if $4 = "center" then
          strText = regExp.Replace(strText,"<div style=""margin:0 auto 0 auto;border:1px solid $3; width:$1;background-color:$2;padding:10px;margin-bottom:5px;"">")
    else
          strText = regExp.Replace(strText,"<div style=""float:$4;margin-left:0px; border:1px solid $3; width:$1;background-color:$2;padding:10px;margin-bottom:5px;"">")
    End if
    Last edited by Asa; 2016-01-12, 15:30.
    Jag bara ÄR ...... hur ska man annars vara?!?

  • #2
    du få kolla match grupp och sen kolla den i ett regex collection objekt.

    men annars sätt fjärde regex gruppen till (center|right|left) istället för din .*?
    "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

    Kommentera


    • #3
      Hur skriver man det då? Är olika style kod som används om det är
      center
      eller
      right och left
      Jag bara ÄR ...... hur ska man annars vara?!?

      Kommentera


      • #4
        Hej, Åsa!

        Jag har inte skrivit många rader VBscript de senaste tio åren, men jag gör ett försök. Inga garantier med andra ord!

        Kod:
        regExp.Pattern = "\[box2=(.*?),(.*?),(.*?),(.*?)\]"
        
        rMatches = regExp.Execute(strText)
        
        For Each rMatch In rMatches
            position = rMatch.SubMatches(3) ' Här finns center/left/right
            If position = "center" Then
                strText = regExp.Replace(strText,"<div style=""margin:0 auto 0 auto;border:1px solid $3; width:$1;background-color:$2;padding:10px;margin-bottom:5px;"">")
            Else
                strText = regExp.Replace(strText,"<div style=""float:$4;margin-left:0px; border:1px solid $3; width:$1;background-color:$2;padding:10px;margin-bottom:5px;"">")
            End If
        Next
        Last edited by prplxr; 2016-01-13, 10:41.
        Avundas aldrig någon det sken av lycka han har för du känner inte hans hemliga sorger.

        Kommentera


        • #5
          prplxr kommer inte riktigt fungera, då du kommer bara kontrollera den första box2 och köra replace mot den (efter det så har du ersatt alla box2 "taggar".

          Sen vill du nog köra lcase på postion så man inte skriver CeNtEr
          "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

          Kommentera


          • #6
            voigtann1 skrev: Visa inlägg
            prplxr kommer inte riktigt fungera, då du kommer bara kontrollera den första box2 och köra replace mot den (efter det så har du ersatt alla box2 "taggar".

            Sen vill du nog köra lcase på postion så man inte skriver CeNtEr
            Jag hade på känn att det var något jag missade men kunde inte riktigt sätta fingret på vad. Får göra om min kodsnutt lite. Som sagt, är väldigt ringrostig.
            Avundas aldrig någon det sken av lycka han har för du känner inte hans hemliga sorger.

            Kommentera


            • #7
              Ojdå, klassisk ASP med vbscript?
              Dags att byta teknik snart

              Kommentera


              • #8
                Ja, men det är bara en vän som vill ha så. Håller nästan helt på med php nuförtiden.
                Jag bara ÄR ...... hur ska man annars vara?!?

                Kommentera


                • #9
                  Kunde någon komma med en kod som fungerade med flera box2?
                  Jag bara ÄR ...... hur ska man annars vara?!?

                  Kommentera


                  • #10
                    kolla vad rMatch innehåller Åsa, du har svaret framför dig mer eller mindre. Men hade även nog kollat upp om du inte skall matcha en öppen och en stängning av en tagg, du kommer annars få rätt stora problem med att du kan avluta med x antal [/box2] och förstöra din hemsida.
                    "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                    Kommentera


                    • #11
                      Hm, okej men jag har typ noll koll på hur man ska göra ialalfall fast jag har svaret framför mig. Jag som har IQ fiskmås kanske?! :/

                      Vet inte alls hur man skall göra detta då. Har alltid bett om hjälp med det jag ej fattar med Regular Expression så har aldrig lärt mig det.
                      Jag bara ÄR ...... hur ska man annars vara?!?

                      Kommentera


                      • #12
                        Kunde man få ta del av det du skrivit voigtann1?
                        Jag bara ÄR ...... hur ska man annars vara?!?

                        Kommentera


                        • #13
                          Kod:
                          Function Box2(byval str)
                              Dim re, rMatches
                              Set re = new RegExp
                              re.IgnoreCase = true
                              re.Pattern = "\[box2=(.*?),(.*?),(.*?),(left|right|center)\]"
                          
                              set rMatches = re.Execute(str)
                          
                              do until rMatches.Count = 0
                                  For Each rMatch In rMatches
                                      position = rMatch.SubMatches(3) ' Här finns center/left/right
                                      If LCase(position) = "center" Then
                                          str = re.Replace(str, "<div style=""margin:0 auto 5px auto;border:1px solid $3;width:$1;background-color:$2;padding:10px;"">")
                                      Else
                                          str = re.Replace(str, "<div style=""float:$4;margin:0 0 5px;border:1px solid $3;width:$1;background-color:$2;padding:10px;"">")
                                      End If
                                  Next
                                  set rMatches = re.Execute(str)
                              Loop
                          
                              Box2 = str
                          
                              set rMatches = Nothing
                              Set re = Nothing
                          
                          End Function
                          "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                          Kommentera


                          • #14
                            Tack så mycket!
                            Jag bara ÄR ...... hur ska man annars vara?!?

                            Kommentera

                            Working...
                            X