Enkelt regexp

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Gildebrand
    Medlem
    • 2009-06-06
    • 918

    #1

    Enkelt regexp

    Men jag behärskar tyvärr inte "språket". har texten
    Code:
    9;#Namn efternamn;#1;#domän\användarnamn;#10;#Namnare efternamnare
    Som jag vill få ut till
    • Namn efternamn
    • domän\användarnamn
    • Namnare efternamnare


    Hur ska jag skriva uttrycket för att få till det?
    Kodfabriken - Webb- & apputveckling
  • voigtann1
    Forumvärd
    • 2001-06-14
    • 8810

    #2
    Är det alltid samma nummer på 9, 1 och 10?
    [kod]9;#([^;]+);#1;#([^;]+);#10;#([\w\W]+)[/kod]
    "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

    Comment

    • Gildebrand
      Medlem
      • 2009-06-06
      • 918

      #3
      Nej tyvärr, har med hjälp av lite olika sidor, listat ut lite grann av hur det funkar. Med följande så får jag ut de namnen som listas som användarnamn
      Code:
      DOMÄN\\[A-Öa-ö0-9]*[^;]
      Men när jag lägger på [^#] innan "Domän" så får den inte längre några träffar :/

      Code:
      (DOMÄN\\[A-Öa-ö0-9]*)|([A-Öa-ö ]*)
      Funkar inte heller, inget matchas
      Kodfabriken - Webb- & apputveckling

      Comment

      • voigtann1
        Forumvärd
        • 2001-06-14
        • 8810

        #4
        [^#] säger bara att du skall hämta ut ett tecken som inte är "#" så det är rätt klart att den inte hittar på:
        [kod][^#]DOMÄN\\[A-Öa-ö0-9]*[^;][/kod]
        "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

        Comment

        • Gildebrand
          Medlem
          • 2009-06-06
          • 918

          #5
          Hur ska då min regexp se ut? För att få ut både de som anges med domännamn och vanligt namn?
          Kodfabriken - Webb- & apputveckling

          Comment

          • voigtann1
            Forumvärd
            • 2001-06-14
            • 8810

            #6
            Hur är strängen? Är det någon konstant som man kan ha som referens? Jag utgick ifrån att 9, 1 och 10 är alltid samma.

            [kod]#domän\\([^;]+)[/kod]Om det alltid är #domän innan den träff du vill få ut ($1 för grupp namn).
            "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

            Comment

            • Gildebrand
              Medlem
              • 2009-06-06
              • 918

              #7
              De enda konstanterna är # i början av strängen och ; i slutet. Är bara det imellan jag vill ha ut.
              Kodfabriken - Webb- & apputveckling

              Comment

              • voigtann1
                Forumvärd
                • 2001-06-14
                • 8810

                #8
                #([^;]+);
                "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                Comment

                • Gildebrand
                  Medlem
                  • 2009-06-06
                  • 918

                  #9
                  Problemet med den är ju att den plockar siffrorna också (#10, Ska bara tillägga att jag inte vill ha med tecknen # och ;, utan bara namnen. Jag har lyckats skriva en som enligt detta fina lilla verktyg ska funka: http://gskinner.com/RegExr/
                  Då plockar den ut allt jag vill ha, men när jag kör i ASP.NET, så skippar den siffrorna i DOMÄN\AG5079 så det blir bara DOMÄN\AG

                  Regexpen ser ut såhär
                  Code:
                  (DOMÄN\\[A-Öa-ö0-9]*[^;])|([^#0-9;]+)
                  Kodfabriken - Webb- & apputveckling

                  Comment

                  • voigtann1
                    Forumvärd
                    • 2001-06-14
                    • 8810

                    #10
                    Nu få du ta ett steg tillbaka, du vill alltså hitta där #DOMÄN\(whatever); och inte #(whatever);?

                    [kod]#DOMÄN\\([^;]+);[/kod] ge resultatet på följnade test:
                    9;#Namn efternamn;#1;#DOMÄN\användarnamn;#10;#Namnare efternamnare
                    #DOMÄN\AG5079;
                    Träff på användarnamn och AG5079


                    (DOMÄN\\[A-Öa-ö0-9]*[^;])|([^#0-9;]+)

                    Om du bryter ut den så säger du matchar antigen domän\(och så få tecken som möjligt som är a-ö + 0-9) eller något som inte är # och 0-9.

                    Vill du alltid ha DOMÄN\ med i dina träffar?

                    [kod]#(DOMÄN\\[^;]+);[/kod]


                    eller är det:
                    [kod]#([\D][\w\s\\]*);[/kod]du är ute efter? För att få:
                    9;#Namn efternamn;#1;#domän\användarnamn;#10;#Namnare efternamnare;#domän\AG5079;
                    Då måste den börja med # + INTE är ett tal på första tecknet.
                    "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                    Comment

                    • Gildebrand
                      Medlem
                      • 2009-06-06
                      • 918

                      #11
                      Vill ha ut följande

                      Code:
                      9;#[B]Namn efternamn[/B];#1;#[B]domän\användarnamn[/B];#10;#[B]Namnare efternamnare[/B]
                      Namnen och användarnamnen varierar förstås
                      Kodfabriken - Webb- & apputveckling

                      Comment

                      • voigtann1
                        Forumvärd
                        • 2001-06-14
                        • 8810

                        #12
                        Och hur vill du komma åt varje träff då? Vad fungera inte?
                        "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                        Comment

                        • GunnarD
                          Medlem
                          • 2001-06-03
                          • 4250

                          #13
                          Lätt modifierad variant av voigtann1's första uttryck:
                          [kod]
                          #([^;]+);#1;#([^;]+);#\d+?#([\w\W]+)
                          [/kod]

                          POC:
                          [kod]#!/usr/bin/perl

                          $a="9;#Namn efternamn;#1;#doman\\anvandarnamn;#10;#Namnare efternamnare";

                          $a =~ /\d+?;#([^;]+);#1;#([^;]+);#\d+?;#([\w\W]+)/;

                          print $a;
                          print "\n";
                          print $1." - ". $2." - ".$3;
                          print "\n";
                          [/kod]

                          Vilket genererar:
                          [kod]
                          9;#Namn efternamn;#1;#doman\anvandarnamn;#10;#Namnare efternamnare
                          Namn efternamn - doman\anvandarnamn - Namnare efternamnare
                          [/kod]
                          So long and thanks for the fish.

                          Tyvärr så har jag nu en person på min ignoreringslista. Personen ifråga höjer inte trivselfaktorn här, snarar tvärtom varför jag nu tackar för mig!

                          Comment

                          • Sjodahl
                            Medlem
                            • 2003-05-05
                            • 3137

                            #14
                            Regexp: Enligt 10W32

                            ... RADERAT!
                            Last edited by Sjodahl; 2010-11-11, 16:35. Reason: haha skulle skapa en ny tråd, men något blev fel!
                            Mobiloperatörer är pinsamma! | maxsurf.eu

                            Comment

                            Working...