2013-04-24 14 views
7

W java, jaka jest różnica między "\\d+" i "\\d++"? Wiem, że ++ to kwantyzator dzierżawczy, ale jaka jest różnica w dopasowywaniu ciągu liczbowego? Jaki ciąg może pasować do "\\d+", ale nie może z "\\d++"? Kwantyfikator ilościowy wydaje się być znaczący tylko z kwantyfikatorem ".*". Czy to prawda?Różnica między "\ d +" i "\ d ++" w java regex

Odpowiedz

0

\ D + oznacza:
\d oznacza cyfry (znaku w zakresie 0-9) i + oznacza 1 lub więcej razy. Tak więc, \d+ jest 1 lub więcej cyfr.

\ d ++ Środki z Quantifiers

ten nazywany jest zaborczy kwantyfikatorów i zawsze jeść cały ciąg wejściowy, próbując raz (i tylko raz) na mecz. W przeciwieństwie do chciwych kwantyfikatorów, kwantyzmy zaborcze nigdy się nie wycofują, nawet jeśli pozwoliłoby to na całkowity sukces.

+0

Pytanie dotyczy '\ d ++'. – Blender

+1

Cytat z Twojej odpowiedzi jest niepoprawny i nie można go znaleźć na stronie, z którą się łączyłeś. Posiadacze kwantyfikatorów nie zawsze "jedzą cały łańcuch wejściowy". –

10

Kwantyfikatory ilościowe nie zostaną wycofane, nawet jeśli do ogólnego dopasowania wymagane jest wycofanie.

Tak więc, na przykład, wyrażenie regularne \d++0 nigdy nie może dopasować żadnych danych, ponieważ \d++ dopasuje wszystkie cyfry, w tym 0 potrzebna pasujące ostatni symbol regex.