Znalazłem taki program z metodami wykorzystującymi wyrażenia regularne(dokładnie grupy wyrażeń) i nie rozumiem do końca jak on działa, tzn. dlaczego zawartość grupy zerowej się zmienia i ile jest w końcu odnalezionych grup(te grupy mam liczyć w regEx czy w str?). Bardzo proszę o jakieś proste wytłumaczenie, bo szukałem i o tych grupach wyrażeń regularnych prawie nic nie ma...
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WyrażeniaRegularneGrupy {
public static void main(String[] av) {
String regEx = "[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+)";
String str = "a b c d e 1 2 3 4.5 ";
Pattern pattern = Pattern.compile(regEx);
Matcher m = pattern.matcher(str);
int k=m.groupCount();
System.out.println("Przy dopasowywaniu wzoraca odnaleziono: "+(k+1)+" grupy.");
while(m.find()) {
String z=m.group();
System.out.println("Zawartosc grupy zerowej:"+z);
for(int i = 0; i<=m.groupCount() ; i++) {
System.out.println("Group " + i + ": " + m.group(i));
}
}
}
}
Działa on tak:
Przy dopasowywaniu wzoraca odnaleziono: 4 grupy.
Zawartosc grupy zerowej:1
Group 0: 1
Group 1: 1
Group 2: null
Group 3: null
Zawartosc grupy zerowej:2
Group 0: 2
Group 1: 2
Group 2: null
Group 3: null
Zawartosc grupy zerowej:3
Group 0: 3
Group 1: 3
Group 2: null
Group 3: null
Zawartosc grupy zerowej:4.5
Group 0: 4.5
Group 1: 4.5
Group 2: .5
Group 3: null