Avatar billede kryon Nybegynder
15. oktober 2003 - 13:44 Der er 2 kommentarer

Skal *ikke* matche hvor et *helt* ord/sætning er til stede

Hej
Jeg sidder i ASP og skal matche en række <IMG> tags som IKKE indeholder en ALT atributte.
Det er i nogle store html filer som indeholder mange IMG tags, og jeg kan/vil derfor ikke loope igennem teksten flere gange - derfor vil jeg have én pattern der kan bruges... 

Af nedenstående skal altså de to første <IMG>s altså matches, men ikke det sidste...

<IMG align=center src="printervenligx44x1.jpg" border=0>
<IMG src="printervenligx44x1.jpg" border=0>
<IMG alt="" src="printervenligx44x1.jpg" border=0>

Jeg har forsøgt mig med en pattern som denne

<IMG([^alt=]*?)src=(.*?)>

men [^alt=] går pr tegn og ikke som en sætning, så den matcher kun den miderste.
Kan man ikke ikke matche et *helt ord* som i modsætning til en række enkelt tegn?

Hvis der kommer en ALT attribut, så vil den altid komme før SRC attributten, da jeg selv indsætter ALT attributten...

Håber at der er nogen der kan hjælpe.

mvh
Rasmus
Avatar billede kryon Nybegynder
16. oktober 2003 - 10:25 #1
Så lykkedes det mig selv at finde svaret...

<IMG\s?(?!alt=)(.*?)src=(.*?)>

Det hedder en negativ lookahead, og det har jeg sgu ledt efter længe =)
Der kan læses mere om emnet her

http://www.regular-expressions.info/lookaround.html

Der kan også laves alternativer, dvs. at flere "ikke" ord kan skrives ind. Fx denne her som finder <A Names> som ikke må hedde noget der starter med page, table eller image:

<A(?:.*?)name=(?!page|image|table)(.*?)>(.*?)</A>
Avatar billede Slettet bruger
26. november 2003 - 05:16 #2
Kunne du ikke lige selv svare og snuppe pointene, så vi andre ikke tror, at der er et uløst problem her?
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