wyrażenia regularne-grupy

0

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

0

To nie jest nic innego ja zbior wszystkich trafien z zastosowania regEx na str.
Rozpoznane zostaly 4 grupy: 1 2 3 i 4.5 . m.find() zwraca nastepne trafienie. String z=m.group() pokazuje ta grupe. Nic o grupach nie znalazles? Wystarczy w wyszukiwarce wpisac samo java.util.regex.Matcher albo
java.util.regex.Pattern to juz na pierwszej stronie wyskoczy dokumentacja do tego. Tu masz po polsku opisane te dwie klasy: ftp://ftp.helion.pl/online/wyralk/wyralk-33_44.pdf (wycinek textu z ksiazki "Wyrazenia regularne" wydawnictwa O'Reilly).

0

dzięki wielkie

1 użytkowników online, w tym zalogowanych: 0, gości: 1