Questo topic e' stato chiuso dal moderatore.
14/08/10 21:52
I)eathBringer
Ho creato un pattern per identificare dei numeri decimali (positivi o negativi) ma, anche se il valore analizzato non è composto da sole cifre, l'analisi ha sempre successo (a meno che non sia formato da soli non numerici): "-?\d+(,\d+)?"
Spero che qualcuno mi possa aiutare perchè io non so veramente dove andare a sbattere la testa a questo punto...
aaa
15/08/10 3:22
pierotofy
Puoi fare una lista di esempi che dovrebbero essere identificati e un'altra di esempi che dovrebbero essere scartati?
15/08/10 11:33
netarrow
Devi specificare i caratteri di inizio e fine riga così:
^-?\d+(,\d+)?$
aaa
15/08/10 15:41
netarrow
La regex che ti ho passato l'ho testata ( su
gskinner.com/RegExr/ )
Se non ti funziona devi verificare di passare una stringa trimmata (usa Trim() di String), quindi senza spazi davanti e dietro e devi abilitare il multiriga.
Puoi farlo passando dei parametri alle classi per gestire le regex di .net o direttamente nella regex così:
(?m)^-?\d+(,\d+)?$
Questo vale se tu vuoi verificare che un input rispetti questo pattern.
Se devi invece cercare dentro un testo più grande tutti i punti che lo rispettano chiaramente l'inizio e fine riga non contano più, e dovresti fornirci magari il testo di origina da cui vuoi estrarre i numeri.
rettifica: il multilinea potresti anche non usarlo effettivamente, visto che se quello che devi fare è il check di un input sarà su una linea unica.
Ultima modifica effettuata da netarrow 15/08/10 15:47
aaa
15/08/10 16:10
netarrow
Prima non poteva funzionare cmq per questo motivo:
se tu accetti come pattern questo:
-?\d+(,\d+)?
e una stringa contiene ad esempio
a5,2b
è cmq valida, perchè contiene quel pattern.
Per dirgli che la stringa, dall'inizio alla fine, deve essere esattamente quel pattern allora devi usare ^ e $
aaa
15/08/10 16:20
I)eathBringer
Si ma infatti in quel modo funziona, è solo che non ho capito come diavolo ho fatto ad infilare quel pattern nelal funzione O_O vabbè, comunque sembrerebbe che ho risolto... Grazie a tutti
aaa