Avatar billede mikkelbm Nybegynder
13. juni 2004 - 00:24 Der er 13 kommentarer og
1 løsning

HTML finde tekst mellem tags

Lad os sige jeg har følgende html sætning:

<td width="7%" align="right" height="18"><span lang="en-us"><font size="2">2,5</font></span></td>

Det eneste jeg har brug for er det "2,5" der står inde i det hele.

Hvordan klares dette smartest?

Har kigget lidt på regex, men har ikke arbejdet med det før. Hvis der er nogen der har nogle forslag ville det være rart.
Avatar billede blutonium Nybegynder
13. juni 2004 - 00:27 #1
<td width="7%" border="0" align="right" height="18"><span lang="en-us"><font size="2">2,5</font></span></td>
Avatar billede mikkelbm Nybegynder
13. juni 2004 - 00:29 #2
What?
Avatar billede roenving Novice
13. juni 2004 - 00:30 #3
Du har fået lagt dit spørgsmål i en forkert kategori, da det garanteret er javascript, du mener ...

Luk her og stil spørgsmålet i http://www.eksperten.dk/spm/Programmering/Script/JavaScript/ ...

-- svar selv og accepter dit eget svar efter at have markeret dit navn i boksen til venstre !-)
Avatar billede mikkelbm Nybegynder
13. juni 2004 - 00:31 #4
Nej!

Det er faktisk den rette kategori.

Jeg vil gerne kunne udhive de data i et Java program!
Avatar billede roenving Novice
13. juni 2004 - 00:56 #5
Nu kan jeg nada Java, men følgende ting virker i javascript, så måske kan du bruge det som pseudo-kode:

var x = '<td width="7%" align="right" height="18"><span lang="en-us"><font size="2">2,5</font></span></td>'
var reg = /.*>([^<]+).*/g;
alert(x.replace(reg,"$1"));

-- ideen i den er, at den kun må genkende noget, som ligger imellem afslutningen af et tag og starten af det næste, hvis der er et tegn eller mere ...
Avatar billede mikkelbm Nybegynder
13. juni 2004 - 00:59 #6
Jeg prøver at få noget ud af det. Selvom jeg stadig gerne vil ha' eksempler i Jave :)
Avatar billede mikkelbm Nybegynder
13. juni 2004 - 01:04 #7
Java - skulle der selvfølgelig stå!
Avatar billede arne_v Ekspert
13. juni 2004 - 18:52 #8
import java.util.regex.*;

public class FindVal {
    public static void find(String s) {
        Pattern p = Pattern.compile("(?:<[^>]*>)*([^<]+)(?:<[^>]*>)*");
        Matcher m = p.matcher(s);
        while (m.find()) {
            System.out.println(m.group(1));
        }

    }
    public static void main(String[] args) {
        find("<a>1</a>");
        find("<a>1</a><b><c>23</c></b>");
    }
}
Avatar billede mikkelbm Nybegynder
13. juni 2004 - 20:18 #9
Perfekt Arne!

Smid et svar...

Hvis du har tid, kunne det være du kort ville fortælle hvad det er der sker i den regular expression?
Sådan at jeg har mulighed for at arbejde videre med det.
Avatar billede arne_v Ekspert
13. juni 2004 - 20:39 #10
svar
Avatar billede arne_v Ekspert
13. juni 2004 - 20:42 #11
<[^>]*> = en '<' plus nul eller flere tegn som ikke er '>' plus en '>' = tag

[^<]+ = et eller flere tegn som ikke er '<' = ikke tag

(?:  )* = nul eller flere forekomster som ikke tæller med

() = en forekomst som tæller med
Avatar billede mikkelbm Nybegynder
13. juni 2004 - 20:43 #12
Lækkert - tak for det :)
Avatar billede arne_v Ekspert
13. juni 2004 - 20:46 #13
regular expressions kan være meget nyttig i mange sprog: Java, C# etc.

Og bemærk at roenvings regexp er næsten det samme som mit. ([^<]+) er kernen i begge.
Avatar billede mikkelbm Nybegynder
13. juni 2004 - 20:51 #14
Jeg er med på det er nyttigt, men da jeg ikke har arbejdet med det før, var dit eksempel det mest brugbare for mig.
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