[JAVA] Problema Regex

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

[JAVA] Problema Regex

Messaggio da Fabio1989 »

Salve,
sto impazzendo per trovare una regex (probabilmente banale) che mi permetta di fare quanto segue:

channel=IPHONE, --> IPHONE

ovvero che mi restituisce quanto presente tra la stringa fissa iniziale "channel=" e la "," finale.

Potete aiutarmi?
Devo necessariamente farlo con una regex.

Grazie, Fabio.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Problema Regex

Messaggio da Zoff »

Codice: Seleziona tutto

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

public class Main {
	public static void main(String[] args) {
		String s ="channel=IPHONE,";
		Pattern p = Pattern.compile("=([^,]+),");
		Matcher m = p.matcher(s);
		if( m.find() ) {
			System.out.println("Ho trovato: "+ m.group(1)); //IPHONE
		}else{
			System.out.println("Stringa non valida!");
		}
	}
}
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

Messaggio da Fabio1989 »

Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4555443#p4555443][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:

Codice: Seleziona tutto

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

public class Main {
	public static void main(String[] args) {
		String s ="channel=IPHONE,";
		Pattern p = Pattern.compile("=([^,]+),");
		Matcher m = p.matcher(s);
		if( m.find() ) {
			System.out.println("Ho trovato: "+ m.group(1)); //IPHONE
		}else{
			System.out.println("Stringa non valida!");
		}
	}
}
Ciao,
grazie per la risposta, però mi sono accorto che quello che ho richiesto è sbagliato.

Praticamente, ho una stringa del tipo

Codice: Seleziona tutto

PARAMETERS: accountDeviceVersion=x.x.x, accountDeviceModel=APPLE, deviceType=IPHONE, action=actionToDo, accountDeviceIdType=SERIALNUMBER, ip=xx.xx.xx.xx, channel=IPHONE
Ora, il mio scopo è di estrarre il "valore" dato il valore della "chiave", per cui se fornisco:

Codice: Seleziona tutto

action --> mi deve restituire quanto presente tra "action=" e "," quindi "actionToDo"

Codice: Seleziona tutto

channel --> mi deve restituire quanto presente tra "action=" e fine stringa, quindi "IPHONE"
Cosa importante da considerare è che, in una successiva PARAMETERS, i parametri potrebbero essere ordinati diversamente:

Codice: Seleziona tutto

PARAMETERS: accountDeviceVersion=x.x.x, accountDeviceModel=APPLE, channel=IPHONE, action=actionToDo, accountDeviceIdType=SERIALNUMBER, ip=xx.xx.xx.xx, deviceType=IPHONE
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Problema Regex

Messaggio da Zoff »

Sostituisci action a channel prima dell'uguale
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

Messaggio da Fabio1989 »

Ciao,
perdonami, non ho capito bene cosa intendi, potresti essere più esplicito?

Grazie.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Problema Regex

Messaggio da Zoff »

In effetti mi sono sbagliato.

Comunque:

Codice: Seleziona tutto

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

public class Main {
   public static void main(String[] args) {
	  String s ="PARAMETERS: accountDeviceVersion=x.x.x, accountDeviceModel=APPLE, channel=IPHONE, action=actionToDo, accountDeviceIdType=SERIALNUMBER, ip=xx.xx.xx.xx, deviceType=IPHONE";
	  Pattern p = Pattern.compile("action=([^,]+),");
	  Matcher m = p.matcher(s);
	  if( m.find() ) {
		 System.out.println("Ho trovato: "+ m.group(1)); //IPHONE
	  }else{
		 System.out.println("Stringa non valida!");
	  }
   }
}
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

Messaggio da Fabio1989 »

Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4555584#p4555584][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:In effetti mi sono sbagliato.

Comunque:

Codice: Seleziona tutto

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

public class Main {
   public static void main(String[] args) {
	  String s ="PARAMETERS: accountDeviceVersion=x.x.x, accountDeviceModel=APPLE, channel=IPHONE, action=actionToDo, accountDeviceIdType=SERIALNUMBER, ip=xx.xx.xx.xx, deviceType=IPHONE";
	  Pattern p = Pattern.compile("action=([^,]+),");
	  Matcher m = p.matcher(s);
	  if( m.find() ) {
		 System.out.println("Ho trovato: "+ m.group(1)); //IPHONE
	  }else{
		 System.out.println("Stringa non valida!");
	  }
   }
}
Ciao Zoff,
ti ringrazio, funziona! :D

L'unico problema che ho notato è che se cerco "deviceType" ho errore (perchè è l'ultimo, quindi non termina con la virgola finale al contrario degli altri).
Come hai capito, sono una frana con le regex...come si potrebbe modificare per includere anche questo caso?

Grazie!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Problema Regex

Messaggio da Zoff »

Aggiungi un ? dopo la virgola.
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
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti