Avatar billede dadane Novice
21. januar 2009 - 11:07 Der er 7 kommentarer og
2 løsninger

Regulære udtryk og Java

Jeg har en tekststreng regNr. Jeg vil gerne have den formateret på en bestemt måde.

Den kan indeholde f.eks. 2 bogstaver, evt. et eller flere mellemrum og så 3-5 tal.
Hvis den gør det vil jeg gerne vide det, og have de to bogstaver ud i en variabel (f.eks. regNrBogst) og tilsvarende de 3-5 tal ud i en anden (f.eks. regNrTal).
Hvis ikke mit regNr ser sådan ud skal jeg vide det (så er det en ønskenummerplade og det er også o.k.)

Men jeg er lidt lost på hvordan.
Avatar billede arne_v Ekspert
21. januar 2009 - 15:18 #1
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LicensePlates {
    private static final Pattern p = Pattern.compile("([A-Z]{2})(?:[ ]*)([0-9]{3,5})");
    public static void parse(String s) {
        Matcher m = p.matcher(s);
        if(m.find()) {
            System.out.println(m.group(1) + " " + m.group(2));
        } else {
            System.out.println("special");
        }
    }
    public static void main(String[] args) {
        parse("AA 1234");
        parse("AA 12");
        parse("ARNE");
        parse("AA                                        1234");
    }
}
Avatar billede dadane Novice
22. januar 2009 - 11:21 #2
Super Arne, - det virker perfekt!

Hvad betyder (?:[ ]*)
I særdeles hed hvad betyder ?:
Avatar billede dadane Novice
22. januar 2009 - 11:27 #3
Måske alligevel ikke.

ABC 1234 giver et match, - nemlig BC 1234
Avatar billede dadane Novice
22. januar 2009 - 11:37 #4
En ^ i starten ser ud til at løse problemet med at ABC 1234 forståes som BC 1234.
Avatar billede arne_v Ekspert
22. januar 2009 - 14:56 #5
Ups ja. ^ i starten og $ til sidst er nok noedvendig.
Avatar billede arne_v Ekspert
22. januar 2009 - 15:02 #6
?: betyder bare der ikke laves en gruppe med indholdet
Avatar billede arne_v Ekspert
22. januar 2009 - 15:02 #7
og et svar
Avatar billede dadane Novice
22. januar 2009 - 15:22 #8
Dvs. uden ?: så vil de evt. mellemrum være m.group(2) (hvad enten der er nogen eller ej) og m.group(3) vil så været mit tal?
Avatar billede arne_v Ekspert
22. januar 2009 - 20:25 #9
ja
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

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