[Risolto] Java: poblema Regex con carattere virgola

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Fabio1989
Prode Principiante
Messaggi: 151
Iscrizione: domenica 1 novembre 2009, 22:26

[Risolto] Java: poblema Regex con carattere virgola

Messaggio 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.
Ultima modifica di Fabio1989 il mercoledì 4 giugno 2014, 9:58, modificato 1 volta in totale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Problema Regex con carattere virgola

Messaggio 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));
			}
		}
	}
}
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Fabio1989
Prode Principiante
Messaggi: 151
Iscrizione: domenica 1 novembre 2009, 22:26

Re: [JAVA] Problema Regex con carattere virgola

Messaggio da Fabio1989 »

Grazie, funziona! :-)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti