Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Espressioni Regolari

  1. #1

    Espressioni Regolari

    codice:
    File doc=new File("C:/CPRSYS.311");
    		    FileInputStream in = new FileInputStream(doc); 	                     FileChannel ch = in.getChannel();
    	      
    	        InputStreamReader isr = new InputStreamReader(in);
    	    	LineNumberReader lnr = new LineNumberReader(isr);
    	    	
    	    	String line="";         
    	    	while(true){
    	    	    line = lnr.readLine();
    	    	    if (line != null) {
    	    	    	if ((line.charAt(0)) != '#')
    	    	    	{	   
    	    	    		String exp = ".";
    	    	    		Pattern pattern = Pattern.compile(exp);
    	    	    		Matcher matcher = pattern.matcher(line);
    	    	    		if (matcher.matches())
    	    	    			System.out.println(line);
    	    	    			*/
    	    	    	}
    	    	    }
    	    	    if (line == null) break;
    		    	}
    Devo implemetare un parser di un file che mi legge solo righe che sono conformi ad un certo pattern ma quando faccio il matching con l'espressione regolare non mi esce nulla! anche se in questo caso lo mecchio con . che rappresenta qls carattere!! cosa sbaglio?? grazie per l'aiuto!!

    le righe hanno questo formato

    ALLOCATED_TIME_OFFSET=745
    TIMEOUT=60
    TIME_BETWEEN_RSP=10
    OPERATIONAL_TIMER=259200
    MESSAGE_DATA_GAP=1

    poi di questo devo riuscire a separare il nome (prima del =) e il valore!!!!

  2. #2
    Per separare chiave e valore puoi utilizzare StringTokenizer. L'espressione regolare valida nelle ipotesi che il numero sia intero è la seguente:

    Codice PHP:
    String exp "^.*[^=]=[0-9]*$";
    Pattern pattern Pattern.compile(exp);
    Matcher matcher pattern.matcher(line);
    if (
    matcher.matches()){
         
    StringTokenizer s = new StringTokenizer(line"=");
         
    String chiave s.nextToken();
         
    String valore s.nextToken();
         .....
    }else{
         
    System.out.println("Stringa non corretta");

    Al mio segnale... scatenate l'inferno!

  3. #3
    Grazie funziona!! ma potresti spiegarmi meglio l'espressione regolare!!?!?!? grazie

  4. #4
    Originariamente inviato da rocklife
    Grazie funziona!! ma potresti spiegarmi meglio l'espressione regolare!!?!?!? grazie

    Allora provo a risponderti io. In quella espressione regolare viene controllato:

    1) Quasiasi cartattere prima dell'uguale va bene tranne l'uguale stesso ---> .*[^=]
    2) Il cartattere di uguale ----> =
    3) Qualsiasi stringa formata da numeri compresi tra 0 e 9 ----> [0-9]*

  5. #5
    grazie e il $ finale che vuol dire? anche se a dire la verita' davanti a tutto c'e' una negazione ^ pero' con o senza c'e' lo stessi risultato

  6. #6
    Originariamente inviato da rocklife
    grazie e il $ finale che vuol dire? anche se a dire la verita' davanti a tutto c'e' una negazione ^ pero' con o senza c'e' lo stessi risultato
    no:

    la ^ iniziale vuol dire "inizio stringa"
    il $ finale vuol dire "fine stringa"

  7. #7
    grazie assai a tutti!!! ))

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.