2013-04-24 14 views
7

In java, qual è la differenza tra "\\d+" e "\\d++"? So che ++ è un quantificatore possessivo, ma qual è la differenza nell'abbinare la stringa numerica? Quale stringa può corrispondere a "\\d+" ma non a "\\d++"? Il quantificatore possessore sembra essere significativo solo con il quantificatore ".*". È vero?Differenza tra "\ d +" e "\ d ++" in java regex

risposta

0

\ d + Mezzi:
\d significa una cifra (Personaggio nell'intervallo 0-9), e + indica 1 o più volte. Quindi, \d+ è 1 o più cifre.

\ d ++ Mezzi da Quantifiers

questo è chiamato il quantificatori possessivi e sempre mangiano l'intera stringa di input, provare una volta (e solo una volta) per una partita. A differenza dei quantificatori grezzi, i quantificatori possessivi non si fermano mai, anche se così facendo consentirebbe alla partita complessiva di avere successo.

+0

La domanda riguarda '\ d ++'. – Blender

+1

La citazione nella tua risposta è errata e non può essere trovata nella pagina a cui sei collegato. I quantificatori possessivi non sempre "mangiano l'intera stringa di input". –

10

I quantificatori possessivi non si fermano, anche se è richiesto un certo arretramento per l'intera partita.

Così, per esempio, l'espressione regolare \d++0 potrà mai adattarsi a qualsiasi ingresso, perché \d++ corrisponderà tutte le cifre, tra cui il 0 necessaria per corrispondere l'ultimo simbolo della regex.