nach 9 - stelliger Nummer suchen

guguli

Bekanntes Mitglied
Hallo zusammen,

ich würde gerne wissen, wie ich in einem Text nach einer 9 stelliger Nummer suchen kann.
Diese Nummer ist uns nicht bekannt.

Danke
 
Hallo.

Java:
Pattern compile = Pattern.compile("(\\d{9})");
        Matcher matcher = compile.matcher("Test123456789asddas_");

        while (matcher.find()) {
            System.out.println(matcher.group());
        }

Grüße
 
Wenn dann doch bitte richtig:
Java:
        String s = "bla\n"
                + "123456789\n"
                + "bla\n"
                + "987654321123456789\n"
                + "bla\n";
        Pattern pattern = Pattern.compile(".*?(\\d{9}).*?", Pattern.DOTALL);
        Matcher matcher = pattern.matcher(s);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }

Code:
123456789
987654321
123456789
 
Wenn dann doch bitte richtig:
Java:
        String s = "bla\n"
                + "123456789\n"
                + "bla\n"
                + "987654321123456789\n"
                + "bla\n";
        Pattern pattern = Pattern.compile(".*?(\\d{9}).*?", Pattern.DOTALL);
        Matcher matcher = pattern.matcher(s);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }

Code:
123456789
987654321
123456789

Naja "987654321123456789\n" ist eine ganze Zahl. Also ist deines nicht ganz korrekt.
 
Leider ist (\\d{9}) und .*?(\\d{9}).*? nicht korrekt. Es wird bei beiden 987654321123456789 geliefert obwohl es mehr als 9 Zeichen hat. Aus diesem Grund ist sowas besser:

Java:
    private String getNumber(String text) {
        Pattern compile = Pattern.compile("(\\d{9})");

        Matcher matcher = compile.matcher(text);

        while (matcher.find()) {
            String group = matcher.group();
            if (group != null) {
                if (group.length() == 9) {
                    return group;
                }
            }
        }
        return null;
    }

    private List<String> getNumbers(String text) {

        List<String> numbers = new ArrayList<>();

        Pattern compile = Pattern.compile("(\\d{9})");
        Matcher matcher = compile.matcher(text);

        while (matcher.find()) {
            String group = matcher.group();
            if (group != null) {
                if (group.length() == 9) {
                    numbers.add(group);
                }
            }
        }
        return numbers;
    }

Grüße
 
Also liefert (\\d{9}) genau das was verlangt wurde. Also ist das auch richtig.
Sorry großer Quatsch, was ich geschrieben hatte. Es genügt einfach:
Java:
        String s = "bla\n"
                + "123456789\n"
                + "bla\n"
                + "987654321123456789\n"
                + "bla\n";
        Pattern pattern = Pattern.compile("\\d{9}");
        Matcher matcher = pattern.matcher(s);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }

Bitte entschuldigt mein Verhalten.
 

Zurück
Oben