Avatar billede montago Praktikant
03. oktober 2007 - 15:58 Der er 12 kommentarer og
1 løsning

Bruge RegEx til at finde URLs og omsætte dem med URI objekt

Jeg har lavet en Genial Regex som kan finde alle URLs på en HTML side (string)

Disse URLs skal omdannes til Absolutte URL's hvilket Uri() kan gøre for mig ::

// Uri BaseUrl = new Uri("http://www.domæne.dk") //
Uri AbsoluUrl = new Uri(BaseUrl, "Relativ/fil.aspx")

nu er sagen så... hvordan fanden parser jeg alle de relative urls igennem Uri ?????

problemet er ikke at finde ud af om linket er relativt, men at bruge regex til at parse matches igennem uri !!!
Avatar billede nielle Nybegynder
03. oktober 2007 - 16:04 #1
Hvorfor går du ikke via en UriBuilder?

1) Hvis du nu sætter din BaseUrl som en static variabel
2) og bruger din MatchEvaluater som i det foregående spørgsmål (den kan tilgå den statiske variabel)
3) Så kan du bruge UriBuilder til at sætte delene sammen
4) og du kan bede UriBuilder om at rerurnere den resulterende Uri.
Avatar billede montago Praktikant
03. oktober 2007 - 16:07 #2
god dammit... har lige fundet ud af det
Avatar billede nielle Nybegynder
03. oktober 2007 - 16:08 #3
"Det"?
Avatar billede montago Praktikant
03. oktober 2007 - 16:08 #4
Alternativet er så at bruge Matches... som returnere et array af matches... disse kan parses uden at bruge et statisk objekt
Avatar billede montago Praktikant
03. oktober 2007 - 16:11 #5
BaseURL må ikke være statisk, fordi der er flere base-urls
Avatar billede montago Praktikant
03. oktober 2007 - 17:09 #6
need help :(
Avatar billede montago Praktikant
03. oktober 2007 - 17:19 #7
HAHAHAHAHAHA

Jeg må have fået en hjeneblødning i dag

Regex reg = new Regex("(ABC)(.*)");
string str = "ABCDEFG";
str = reg.replace(str, Fix("$1") + "$3");

*sidder og græder fordi jeg er så dum*
Avatar billede montago Praktikant
03. oktober 2007 - 17:20 #8
Fix er en [public static string] som kan tage X parametre...

Fuck delegates
Avatar billede montago Praktikant
03. oktober 2007 - 17:21 #9
hvem kunne vide at man kan kalde funktioner inde i en replace, og enda bruge $-matches i den string som sendes ?
Avatar billede nielle Nybegynder
03. oktober 2007 - 17:32 #10
> BaseURL må ikke være statisk, fordi der er flere base-urls

Der er vel kun et enkelt base-url pr klump HTML-kode du vælger at parse? Nemlig baseurl for den side det kommer fra.
Avatar billede montago Praktikant
03. oktober 2007 - 17:59 #11
FOR FUCK SAKE....

Fix funktionen må ikke tage imod andre objekttyper end string... hvis jeg parser fx gadgetten med ned i Fix bliver "$1" til "$1" i stedet for den forventede match...

Nielle: sådan som programmet er bygget op nu, kan det ikke lade sig gøre at tilgå BaseURL som statisk medlem... idet der er flere instanser af objektet med forskellige BaseUrls...

ikke engang hvis jeg smider de statiske funktioner ud i et seperat objekt, vil jeg kunne skabe en statisk baseurl :(
Avatar billede montago Praktikant
03. oktober 2007 - 18:10 #12
hmm

æv... det virker faktisk ikke alligevel...
Avatar billede montago Praktikant
05. oktober 2007 - 12:48 #13
DEN EGENTLIGE LØSNING:

Regex reg = new Regex(.(...)(URL)(...)..) );
foreach(Match m in Regex.Matches(HTML) )
{
  HTML = HTML.replace(m.ToString(), m.groups[1] + FixURL( m.groups[1] ) + m.groups[3]);
}
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