Wyrażenia regularne - co oznacza jeden z metaznaków?

Potrzebujesz pomocy z C, C++, perl, python, itp.
kornicameister
Posty: 36
Rejestracja: 27 września 2010, 16:54

Wyrażenia regularne - co oznacza jeden z metaznaków?

Post autor: kornicameister »

Nie mogę znaleźć znaczenia jednego ze znaków użytych poniżej

Kod: Zaznacz cały

\b(\w+)\b\s+\1\b
Według przykładu to powinno pasować do ciągów, które są powtórzonymi słowami np.:

Kod: Zaznacz cały

debian debian
Jest dobrze do momentu \1 rozumiem o co chodzi w tym wyrażeniu, ale co robi tam \1 już nie.
C
zy chodzi o to, że \s {pusty znak} ma wystąpić dokładnie jeden raz, oraz "+" oznacza, że taka kombinacja powtórzonych słów może się pojawić wielokrotnie?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Odnosi się to do (\w+) - jest to wsteczna referencja do tego fragmentu wyrażenia regularnego. W miejscu \1 ma zostać dopasowane dokładnie to samo co w miejscu (\w+) - jeśli zostało tam dopasowane słowo debian, to \1 też będzie dopasowywała słowo debian.

PS.
Wygląda mi to na seda. Czy mam rację?
kornicameister
Posty: 36
Rejestracja: 27 września 2010, 16:54

Post autor: kornicameister »

Niestety nie i niestety nie, byłeś blisko.
Ale dziękuję za pomoc.

W takim razie wyrażenie:

Kod: Zaznacz cały

\b(\w+)\b\s+
dawałoby możliwość dopasowania wzorca np. Debian to fajny system oparty na Linuksie?
a nie chyba, nie, bo sprawdziłem przed chwilą, tylko czemu?

Czyli \1 to jest zapamiętanie tego co wystąpiło w pierwszym nawiasie?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Tak, ogólnie rzecz ujmując, \1 to to, co w pierwszym nawiasie, \2 to co w drugim itd.
ODPOWIEDZ