Regex find links, og undgå eksisterende

Tags:    regex c#

Hej!

Jeg har en 'regular expression' som finder url'er i en streng, den ser sådan ud:

@"((www\.|(http|https|ftp|news|file)+\:\/\/)[_.a-z0-9-]+\.[a-z0-9\/_:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])"

Jeg bruger udtrykket til at erstatte url'er med et html link, og vil derfor gerne undgå eksisterende HTML links.

Min ide er at undgå " eller ' i starten eller slutningen af mit udtryk (altså fx src="http://www.dr.dk" eller href='http://www.example.com/img.jpg'), er der nogle der ved hvordan mit udtryk så skal se ud, gerne med lidt forklaring, så jeg måske selv kan løse det næste problem :)

Jeg bruger C#.NET, jeg ved ikke om det har nogen betydning.



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Jeg havde en lignende opgave for noget tid siden, men det bliver simpelthen for komplekst og ulæseligt at gøre det udelukkende med et regex, så jeg valgte, at lave en lille parser. Her er min løsning i JavaScript:

Fold kodeboks ind/udJScript kode 


Du sender bare din HTML kode igennem 'createLinks' funktionen, så får du linkificeret HTML retur.
Det er sikkert ikke så svært at skrive om til C#, hvis ikke JavaScript kan bruges.



Indlæg senest redigeret d. 09.11.2012 21:12 af Bruger #2695
: @ erstattes åbenbart af et smiley her på forum'et :@



Fantastisk :) er det muligt også at fange links uden "http://" ?



Hmm...du kan måske skifte linje 57 ud med noget i denne stil:
Fold kodeboks ind/udJScript kode 


Jeg gjorde protokollen valgfri ved at sætte parantes omkring og afslutte med et spørgsmålstegn.



Hvis jeg bruger den ændring du foreslår bliver alle ord til links :) men tak for forsøget.



Indlæg senest redigeret d. 10.11.2012 01:10 af Bruger #14393
t