Avatar billede kasseper Nybegynder
04. december 2009 - 19:18 Der er 4 kommentarer og
1 løsning

RegExp Pattern matching

Hej

Jeg har en meget lang tekst, hvor jeg skal finde alle de indlejrede tekststrenge der angiver stien til et billed.
Det skal være tekststrenge der er angivet i enten
"
eller
'
og billedtyperne
.jpg
.jpeg
.gif
.png

det skal starte med ' eller "
det skal slutte med .[filformat]" eller .[filformat]'

Jeg er ikke en haj til regExp, men det er der sikkert nogen andre der er :-)
Avatar billede arne_v Ekspert
04. december 2009 - 19:52 #1
Noget a la:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ImageFileNameFinder {
    public static void main(String[] args) {
        String s = "'a.jpg' er paenere end \"b.gif\", mens 'c.txt' ikke er et billede";
        Pattern p = Pattern.compile("(\".*((\\.jpg)|(\\.jpeg)|(\\.gif)|(\\.png))\")|('.*((\\.jpg)|(\\.jpeg)|(\\.gif)|(\\.png))')");
        Matcher m = p.matcher(s);
        while(m.find()) {
            System.out.println(m.group());
        }
    }
}
Avatar billede arne_v Ekspert
04. december 2009 - 20:26 #2
lille rettelse:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ImageFileNameFinder {
    public static void main(String[] args) {
        String s = "'a.jpg' er paenere end \"b.gif\" og 'c.png', mens 'd.txt' ikke er et billede";
        Pattern p = Pattern.compile("(\".*?((\\.jpg)|(\\.jpeg)|(\\.gif)|(\\.png))\")|('.*?((\\.jpg)|(\\.jpeg)|(\\.gif)|(\\.png))')");
        Matcher m = p.matcher(s);
        while(m.find()) {
            System.out.println(m.group());
        }
    }
}
Avatar billede arne_v Ekspert
10. januar 2010 - 04:42 #3
OK ?
Avatar billede kasseper Nybegynder
07. februar 2010 - 21:59 #4
beklager den MEGET sene tilbagevenden...sorry.
MEN, det virker ikke helt.
Problemet er at f.eks. tekst strengen :
**************************
<img style="border:0" src="/image/test.png" />
**************************
returnerer :

" src="/image/test.png"


Så det holder ikke helt.
Har du et forslag til hvordan det skal klares?
Avatar billede arne_v Ekspert
07. februar 2010 - 22:54 #5
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ImageFileNameFinder {
    public static void main(String[] args) {
        String s = "<img style=\"border:0\" src=\"/image/test.png\" />";
        Pattern p = Pattern.compile("(\"[^\"]*?((\\.jpg)|(\\.jpeg)|(\\.gif)|(\\.png))\")|('[^']*?((\\.jpg)|(\\.jpeg)|(\\.gif)|(\\.png))')");
        Matcher m = p.matcher(s);
        while(m.find()) {
            System.out.println(m.group());
        }
    }
}
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