Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2015
    Messaggi
    5
    Ci sono riuscito, anche grazie a quanto hai suggerito te nella tue regex!
    Quoto il codice:

    codice:
    public static void main(String [] argv) {
      String text = "['0000000013','THUS|ETER','VALU']/(['0000000012','FPOD|VHFU','VALU']*['0000000137','PCO','GAS1'])";
      Pattern pattern = Pattern.compile("\\[([^\\[]+)\\]");
      Matcher matcher = pattern.matcher(text);
      while(matcher.find()) {
        System.out.println("Sottogruppo 1 : "+matcher.group(1));
      }
    }
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da pikiuz Visualizza il messaggio
    Pattern pattern = Pattern.compile("\\[([^\\[]+)\\]");
    Se volevi solo trovare le occorrenze di [ ..... ] allora sì, basta 1 regex e il find().

    Comunque la tua espressione non è correttissima. È più corretta:

    "\\[([^\\]]+)\\]"

    Il ^ all'inizio di una "classe" di caratteri [ ] serve a negare il senso. Quindi [^X]+ vuol dire una sequenza di 1 o più caratteri che non contiene X. In una sequenza ABCRGXFRG matcha solo ABCRG.
    Pertanto la regex pura [^\]]+ vuol dire una sequenza che non contiene ']'. Questo serve per trovare più velocemente il ] di terminazione del tuo pattern, evitando che il motore delle regex vada a "consumare" subito tutto l'input causando poi backtracking se avessi usato es. .*
    Insomma, è una ottimizzazione.
    Ultima modifica di andbin; 30-07-2015 a 22:49
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2015
    Messaggi
    5
    Comunque la tua espressione non è correttissima. È più corretta:

    "\\[([^\\]]+)\\]"
    Grazie ancora, seguirò sicuramente il tuo consiglio.

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.