Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Espressioni regolari per file di testo

    Ciao a tutti!
    Sto cercando di capire come usare le espressioni regolari,per processare un file di testo.
    Dopo aver fatto:

    String regex = "aaa";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(input);

    Ecco io nell'argomento input di p.matcher,vorrei mettere un file di testo attraverso la classe File.
    Però non ci riesco.
    Come è possibile?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    204
    Hai già provato ad utilizzare il BufferedReader per importare il file di testo? Ad esempio:

    Codice PHP:
    import java.io.*;

    public class 
    Regex {
      public static 
    void main(String[] argsthrows IOException {
        
    String fileName="regex.txt";  //se è nella stessa cartella del progr., altrimenti devi mettere il 
                                               //percorso assoluto
        
    BufferedReader br=new BufferedReader(new FileReader(fileName));
        ...
        
    //qui inserisci il tuo codice per la regex
        
    ...
      }


  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Espressioni regolari per file di testo

    Originariamente inviato da konqueror
    Ecco io nell'argomento input di p.matcher,vorrei mettere un file di testo attraverso la classe File.
    codice:
    public static StringBuffer readTextFile(File file) throws IOException {
        FileReader fr = null;
    
        try {
            fr = new FileReader(file);
            StringBuffer sb = new StringBuffer();
    
            char[] buf = new char[4096];
            int len;
    
            while ((len = fr.read(buf)) > 0) {
                sb.append(buf, 0, len);
            }
    
            return sb;
        } finally {
            if (fr != null) {
                fr.close();
            }
        }
    }
    Leggi il file (il charset è quello di default) e poi passi lo StringBuffer a matcher() di Pattern. matcher() riceve un CharSequence, e StringBuffer è un CharSequence.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Si si ho risolto con un metodo molto simile.
    Il problema ora è che voglio fare una regex multilinea,e su internet ho trovato questo semplice codice:
    codice:
    import java.util.regex.*;
     public class StringMatcherTest {   public static void main(String[] args)   {     if (args.length<1)     {       System.err.println("usage: java this 'testRegex'");
           System.exit(1);
         }     String regexString = args[0];
         String spamString = "visit our site \n at http://10.1.1.1/. \nmorepoop here."; 
          Pattern aPattern = Pattern.compile(regexString,Pattern.MULTILINE);
         Matcher aMatcher = aPattern.matcher(spamString); 
        if (aMatcher.find())     {       System.out.println("got a match");
         }     else     {       System.out.println("no match"); 
        }   } }
    Però non riesco a costrutire una regex multilinea.
    Eppure faccio qualcosa del tipo "out.*here"
    Come mai non funziona?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da konqueror
    Però non riesco a costrutire una regex multilinea.
    public static final int MULTILINE

    Enables multiline mode.

    In multiline mode the expressions ^ and $ match just after or just before, respectively, a line terminator or the end of the input sequence. By default these expressions only match at the beginning and the end of the entire input sequence.


    Quello che vuoi fare tu, cioè il punto '.' che può matchare anche un newline, lo si attiva con il flag DOTALL.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Grazie risolto!
    Gentilissimo come sempre

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 © 2026 vBulletin Solutions, Inc. All rights reserved.