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

    ricerca di una stringa in un testo

    Ciao a tutti,
    all'interno di un file di testo devo cercare una determinata stringa che è cosi composta:

    "IT123456789" (senza virgolette)

    quindi i requisiti che ha la stringa sono:
    1) inizia sempre con "IT"
    2) dopo "IT" è sempre seguita da 9 numeri random.

    Come devo costruire l'espressione regolare?


    grazie mille a chi mi aiuterà!

    Lore
    www.decalfont.com

  2. #2
    Così dovrebbe andare:"IT\\d{9}"
    Al mio segnale... scatenate l'inferno!

  3. #3
    ho provato ma mi da 0 su groupCount.... cioè significa che non ha trovato la stringa che mi interessa... sembra tutto ok, le librerie sono caricate correttamente....

    Pattern pattern = Pattern.compile("IT\\d{9}", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(txtContent);
    totFatture = matcher.groupCount();
    www.decalfont.com

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lore82
    Pattern pattern = Pattern.compile("IT\\d{9}", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(txtContent);
    Fin qui ok .... ma poi cosa vuoi fare di preciso? Cercare una occorrenza della regex? (vedi find() di Matcher), fare un replace? (vedi i replaceXXX() di Matcher) Verificare che l'intera stringa in input corrisponda alla regex? (che non è come cercare una occorrenza!! Vedi matches() sempre di Matcher).

    Nella regex nel tuo codice non ci sono gruppi "catturanti". I gruppi sono delimitati da parentesi ( e ). Esiste sempre il gruppo 0 che rappresenta l'intero pattern. Altri gruppi, se presenti, partono da 1.

    Es.: "(\\d)(\\w)"

    Qui ci sono 2 gruppi "catturanti", con indici 1 e 2 (oltre allo 0, sempre presente, che è tutto quanto). groupCount() ti darebbe 2.

    Chiarisciti queste questioni, innanzitutto, perché mi sembra che non le hai molto chiare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ciao,
    devo utilizzare matcher.find()

    matcher.group(0) come dici te mi ritorna il codice "IT123456789" ma è solo il primo di una serie!
    Mentre ovviamente voglio trovare tutti i codici!

    Quello che posso fare dopo è:
    for (int i = 0; i<matcher.groupCount(); i++){
    trovato = matcher.group(i).toString();
    System.out.println(trovato);
    }

    Ma non ho ben capito cosa devo fare per 'riempire' matcher.group() con tutti i codici e non solo con il primo trovato!
    www.decalfont.com

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    72
    Vuoi trovare tutti i match all'interno di txtContent?
    Prova così:

    codice:
    String txtContent="IT123456789s sds it11111111111,jkjiT11111131611";
    Pattern pattern = Pattern.compile("IT\\d{9}", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(txtContent);
    int numeroRiscontri=0;
    int i=0;
    while(matcher.find(i)){
         int start=matcher.start();
         int end=matcher.end();
         String temp=txtContent.substring(start, end);
         System.out.println(temp);
         numeroRiscontri++;
         i=end;
    }
    System.out.println(numeroOccorrenze);

  7. #7
    Grande! Ti ringrazio

    Lore
    www.decalfont.com

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.