Avatar billede jespera Nybegynder
12. maj 2005 - 09:39 Der er 16 kommentarer og
1 løsning

Parse URL vha regex og groups - C#

Hej Alle,

Jeg fik et godt svar http://www.eksperten.dk/spm/596725 og bruger den også
men nu skal den udvides.

Den skal stadigvæk lede efter links (http:// ) og der er mellemrum efter
linket.

Men problemt er hvis jeg f.eks har et image tag.

<img src="http://www.eksperten.dk/header.gif">


Her må den IKKE tage dette link.

I et image tag vil der aldrig være mellemrum efter linket!

Så alt det der er i et img tag må ikke medtages.

Hvordan laves dette..???

Nedenstående er den kode jeg bruger:

if (inputString != "")
{
    Regex r;
    Match m;

    r = new Regex("http://[^ ]* ",RegexOptions.IgnoreCase|RegexOptions.Compiled);

    for (m = r.Match(inputString); m.Success; m = m.NextMatch())
    {
        Trace.Write("textlink found:"+m.Groups[0]);   
    }   
}

På forhånd tak
Avatar billede arne_v Ekspert
12. maj 2005 - 10:16 #1
Virker den ikke as is ?

Den kan vel ikke matche hvis der ikke er et mellemrum.
Avatar billede ksoren Nybegynder
12. maj 2005 - 10:28 #2
Hvis tilfældet er, at der aldrig er " foran gyldige links, kan du bruge

r = new Regex("[^\"]http://[^ ]* ",RegexOptions.IgnoreCase|RegexOptions.Compiled);


arne,
<img src="http://www.eksperten.dk/header.gif"> noget tekst

så finder den vel det mellemrum som er efter >
Avatar billede arne_v Ekspert
12. maj 2005 - 10:42 #3
ah ja

r = new Regex("http://[^ \"]*",RegexOptions.IgnoreCase|RegexOptions.Compiled);

måske
Avatar billede jespera Nybegynder
23. maj 2005 - 13:13 #4
ksoren > Den funker kun vist jeg har blank tegn foran ?
Avatar billede jespera Nybegynder
23. maj 2005 - 20:43 #5
Ingen der kan hjælpe ?
Avatar billede arne_v Ekspert
23. maj 2005 - 20:46 #6
jeg tror at du skal droppe test på det mellemrum

men har du ike fået løst dit problem jævnfør http://www.eksperten.dk/spm/619956
hvor du tester for HREF = foran linket ?
Avatar billede jespera Nybegynder
23. maj 2005 - 21:27 #7
nej den parser html code (f.eks html mail).

I det her spg parses text code (f.eks. text mail)
Avatar billede arne_v Ekspert
23. maj 2005 - 21:41 #8
text med <img src="..."> i ?
Avatar billede arne_v Ekspert
23. maj 2005 - 21:47 #9
jeg tror den er svær

men her er et forsøg:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string inputString = "bla bla a http://www.test.com bla bla <img src=\"http://www.test2.com\"> bla bla";
        Regex r = new Regex("(http://[^ ]*)|(src\\s*=\\s*\"(http://[^\"]*)\")",RegexOptions.IgnoreCase|RegexOptions.Compiled);
        for (Match m = r.Match(inputString); m.Success; m = m.NextMatch())
        {
            if(m.Groups[1].Value != "") Console.WriteLine("htmllink found:" + m.Groups[1]);
            if(m.Groups[3].Value != "") Console.WriteLine("imgsrc found:" + m.Groups[3]);
        }   
    }
}
Avatar billede jespera Nybegynder
23. maj 2005 - 21:49 #10
ja helt korrekt. :-)

Min text mail skal bruges til et bestem formål.
Avatar billede jespera Nybegynder
23. maj 2005 - 22:35 #11
arhhh det checker jeg lige, tak......
Avatar billede jespera Nybegynder
23. maj 2005 - 22:57 #12
er du ikke flink at give en forklaring på hvad der sker imellem de forskellige udtryk jeg fatter simpelhen ikke regex endnu.  :-(

Jeg skyder lige 50 point mere i puljen som tak, er det nok ?

Tak for din hjælp så langt..... :-)
Avatar billede arne_v Ekspert
23. maj 2005 - 23:01 #13
(http://[^ ]*)|(src\\s*=\\s*\"(http://[^\"]*)\")

=>

http://[^ ]*
eller
src\\s*=\\s*\"(http://[^\"]*)\"

=>

http:// et antal tegn forskelligt fra blank
eller
src="http:// et antal tegn forskellig fra dobbelt quote "
Avatar billede arne_v Ekspert
23. maj 2005 - 23:02 #14
() angiver grupperne - nummereret efter start parentes

det er gruppe 1 (link) og gruppe 3 (link inde i src=) som vi kigger på

gruppe 2 (hele src=) er uinteressant
Avatar billede jespera Nybegynder
23. maj 2005 - 23:32 #15
okay, :-) det gav en smule mening. Syntes bare det er lidt svært at sammesætte. Men kan man udlade src fra grupperne jeg skal nemlig ikke bruge dem til noget (altså de link den finder)
Avatar billede arne_v Ekspert
23. maj 2005 - 23:35 #16
jeg ville bare fjerne linie

if(m.Groups[3].Value != "") ....
Avatar billede arne_v Ekspert
23. maj 2005 - 23:35 #17
og et svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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