Wpis z mikrobloga

Słuchajcie mirki, mam taki problem, otóż potrzebuję wynaleźć ze Stringa liczby/cyfry pooddzielane znakami interpunkcyjnymi tudzież spacjami
wszystko szło by pięknie, tylko co ja mam wpisać na początek, jak mam string

ab12;34.5,6b 7c 89:1101
Ergo potrzebuję wydobyć tylko cyfry 34, 5, 89 i 1101
Jak napisać regexa, żeby był łaskawy pominąć mi tą 12 na początku?
aktualnie naklepałem:

(\d+)(\W|\s|\p{Punct}|$)
#programowanie #java #regexp
  • 1
@tellet: Po co wszystko załatwiać jednym regexpem? Zrób najpierw split po znakach interpunkcyjnych i potem każdy element listy sprawdzaj sobie prostym regexpem "\d+".

Jeśli masz do dyspozycji Javę 8, to sprowadza się to do jednej linijki przy wykorzystaniu strumieni:

List parseLine(String line) {
  return Stream.of(line.split("[.,:; ]"))
    .filter(s -> s.matches("\d+"))
    .map(s -> Integer.parseInt(s))
    .collect(Collectors.toList());
}