Visualizzazione dei risultati da 1 a 5 su 5

Discussione: estrarre sottostringhe

  1. #1

    estrarre sottostringhe

    ciao a tutti!!!

    non so come fare a estrarre una sottostringa usando le regex..
    devo per esempio estrarre da

    http://www.sito.it/da_estrarre/ciao

    appunto la parte "da_estrarre"..

    mi potete aiutare

  2. #2
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Qualora ti interessa solamente sapere come possono esser usate le classi ed i metodi ecco a te, mentre per la creazioni dell'espressione regolare più adatta per il tuo problema....Cerca su google espressioni rogolari e vedrai quanti bei risultati....
    Cmq il codice postato qui sotto utilizzata le classi specifiche di Java, tra cui il Matcher e la gestione di Exception per quanto riguarda le espressioni regolari.
    Esempio preso dal tutorial di JavaSun
    Codice PHP:
    import java.io.Console;
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;
    import java.util.regex.PatternSyntaxException;

    public class 
    RegexTestHarness2 {

        public static 
    void main(String[] args){
            
    Pattern pattern null;
            
    Matcher matcher null;

            
    Console console System.console();
            if (
    console == null) {
                
    System.err.println("No console.");
                
    System.exit(1);
            }
            while (
    true) {
                try{
                    
    pattern 
                    
    Pattern.compile(console.readLine("%nEnter your regex: "));

                    
    matcher 
                    
    pattern.matcher(console.readLine("Enter input string to search: "));
                }
                catch(
    PatternSyntaxException pse){
                    
    console.format("There is a problem with the regular expression!%n");
                    
    console.format("The pattern in question is: %s%n",pse.getPattern());
                    
    console.format("The description is: %s%n",pse.getDescription());
                    
    console.format("The message is: %s%n",pse.getMessage());
                    
    console.format("The index is: %s%n",pse.getIndex());
                    
    System.exit(0);
                }
                
    boolean found false;
                while (
    matcher.find()) {
                    
    console.format("I found the text \"%s\" starting at " +
                       
    "index %d and ending at index %d.%n",
                        
    matcher.group(), matcher.start(), matcher.end());
                    
    found true;
                }
                if(!
    found){
                    
    console.format("No match found.%n");
                }
            }
        }

    Spero ti sia utile e comprensibile
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  3. #3
    si ok...ho più o meno capito come usare le regex..ma non me ne viene in mente una che possa cercare quel partiolare frammmento....sai darmi un consiglio??

  4. #4
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Ma sei obbligato ad usare le espressioni regolari?
    Questo perchè su quella stringa potresti anche usare uno StringTokenizer con separatore di token "\".
    Poi la posizione da estrarre è sempre la seconda? ( http://www.sito.it/da_estrarre/ciao ).

    Per l'espressione regolare ci sto pensando.....
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  5. #5
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Devo ancora convincermi, ma la soluzione possibile potrebbe essere :

    ( ?<=www[^/])/[0-9a-zA-Z]+/

    Spiegazione :
    (?<=www[^/]) : Indica "che è preceduta" dalla serie di caratteri www seguita da un
    qualsiasi carattere che non sia "/"

    /[0-9a-zA-Z]+/ : Indica la ripetizione consecutiva di tutti i caratteri alfanuerici sia Maiuscoli che
    minuscoli, compresa tra "/" e "/"

    Ottenendo così l'espressione : Cerca la ripetizione consecutiva di tutti i caratteri alfanumerici sia Maiuscoli che minuscoli compresa tra "/" e "/", preceduta dalla serie di caratteri www seguita da un qualsiasiasi carattere che non sia una /

    Per la seconda parte /[0-9a-zA-Z]+/ pensavo di sostituirla con /[^/]+/ perchè nel caso di da_sostituire non verrebbe presa per colpa del carattere _.

    Non sono certo che funzioni, ma tu provala comunque e fammi sapere.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

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.