Avatar billede CodingJoe Nybegynder
09. maj 2011 - 18:49 Der er 10 kommentarer og
1 løsning

Regexp der henter attribut værdier ud.

Meget simpelt.

Jeg har en streng af formatet:

<foo="bar" crap="blah" crap2="blahblah"....

Jeg har behov for et regexp, der giver mig

'bar' når jeg 'kalder' det med 'foo'
'blah' når jeg kalder det med 'crap'
'blahblah' når jeg kalder det med 'crap2'

Er her nogle, der er stærke i Perl?

kravet er at det er værdien, jeg får ud og ikke hele 'foo="bar"', hvilket jeg har fået til at virke...gider ikke at replace...det må kunne lade sig gøre i regexp.
Avatar billede arne_v Ekspert
09. maj 2011 - 18:54 #1
Hvis du kan faa det hele ud kan du vel ogsaa faa vaerdien ud via brug af groups!?!?
Avatar billede CodingJoe Nybegynder
09. maj 2011 - 19:57 #2
Jeg er faktisk mest interesseret i, at få én enkelt værdi ud af gangen, da jeg kun skal køre tingene i en bestemt kontekst.
Avatar billede arne_v Ekspert
09. maj 2011 - 20:10 #3
Ja. Det er vel hvad groups giver mulighed for.

Hvad programmerer du i?
Avatar billede jakobdo Ekspert
09. maj 2011 - 20:25 #4
Arne_V: Mit gær er perl.

#1: Er her nogle, der er stærke i Perl?
Avatar billede jakobdo Ekspert
09. maj 2011 - 20:25 #5
Og mit gæt er også perl. GÆR.. :o)
Avatar billede arne_v Ekspert
09. maj 2011 - 20:48 #6
Jeg kan lave det uden at taenke over det i C#:

using System;
using System.Text.RegularExpressions;

namespace E
{
    public class Program
    {
        public static string Pick(string s, string attrnam)
        {
            Regex re = new Regex(@"\.*" + attrnam + @"\s*=\s*[""']([^""']*)[""']\.*");
            return re.Match(s).Groups[1].Value;
        }
        public static void Main(string[] args)
        {
            string s = @"<foobar crap=""blah"" crap2=""blahblah"">";
            Console.WriteLine(Pick(s, "crap"));
            Console.WriteLine(Pick(s, "crap2"));
            Console.ReadKey();
        }
    }
}

men i Perl vil jeg skulle laese lidt!
Avatar billede CodingJoe Nybegynder
09. maj 2011 - 21:41 #7
Det var i C# jeg skulle lave det i, men regexp stammer jo fra Perl :)
Avatar billede CodingJoe Nybegynder
09. maj 2011 - 21:48 #8
Ahhh selvfølgelig :)

Kan se hvordan du bruger groups delen i c#
Jeg havde faktisk en version, der gav mig det samme i Exresso (program jeg normalt tester regexp i), og der fik jeg samme svar i min group.

Det var i virkeligheden c# delen, jeg skulle udnytte det i. Tak for svaret Arne...

Du er numero uno i alt... :D

Smid bare et svar ind.
Avatar billede arne_v Ekspert
09. maj 2011 - 22:14 #9
svar
Avatar billede arne_v Ekspert
09. maj 2011 - 22:15 #10
regexp er faktisk aeldre end Perl.

Men mange inkl. Java og .NET har valgt at standardisere paa den regexp variant som Perl bruger.
Avatar billede CodingJoe Nybegynder
10. maj 2011 - 07:21 #11
Ahh ok. Jeg fik at vide engang, at regexp var perl, men klart det var i .net sammenhænge, og der har, jo som du skriver taget det fra, Perls implementatin af regexp.

Man får både svar og bliver klogere herinde :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester