Pagina 1 di 1

[Risolto] Java: poblema Regex con carattere virgola

Inviato: martedì 3 giugno 2014, 18:14
da Fabio1989
Salve,
ho un problema nell'utilizzo delle regex in una casistica del genere:

Codice: Seleziona tutto

deviceId: pippo, amount: 8.06, [b]fullPrice: 8,06[/b], cardType: pluto
Il problema, riguarda, come evidenziato, la virgola presente per indicare il prezzo e non il punto.
Attualmente uso questa espressione regolare per poter catturare i valori che mi servono:

Codice: Seleziona tutto

<nomeParametro>:([^,}]+),?
ovvero estraggo quanto presente dal nome del parametro con i due punti fino alla virgola.
Esiste un modo per bypassare questo problema per fullPrice, magari estraendolo con una regex a parte?

Grazie.

Re: [JAVA] Problema Regex con carattere virgola

Inviato: martedì 3 giugno 2014, 19:48
da Zoff
Quella sintassi è ambigua, se puoi cambiarla ti consiglio di farlo (ad esempio sostituendo la virgola come separatore decimale con il punto).

Se proprio non puoi farlo allora devi sapere per certo il formato atteso, ad esempio nella regex puoi cercare tutte le cifre numeriche seguite facoltativamente da una virgola e altre cifre numeriche.
Qualcosa del genere:

Codice: Seleziona tutto

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegEx {
	public static void main(String[] args) {
		String line = "deviceId: pippo, amount: 8.06, fullPrice: 8,06, cardType: pluto";
		Pattern pattern = Pattern.compile("fullPrice:[\\s]*([0-9]+(,[0-9]+)?)");
		Matcher matcher = pattern.matcher(line);
		if (matcher.find()) {
			for( int i=0; i<=matcher.groupCount(); i++){
				System.out.println("Group "+i+": "+matcher.group(i));
			}
		}
	}
}

Re: [JAVA] Problema Regex con carattere virgola

Inviato: mercoledì 4 giugno 2014, 9:57
da Fabio1989
Grazie, funziona! :-)