Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    4

    Pattern Matching in Perl

    Ciao a tutti!

    Ho una domanda abbastanza selvaggia, dedicata ai piu' esperti...

    Devo processare un testo con uno script in Perl e ricercare una stringa compresa tra due parole, allora sono tentato di usare l'espressione regolare

    /PAROLA1((.|\n)*)PAROLA2/

    Il problema e' che PAROLA2 compare piu' volte all'interno del testo, quindi l'espressione mi restituisce la stringa piu' grande (quella tra la prima ricorrenza di PAROLA1 e l'ultima ricorrenza di PAROLA2).

    Attualmente la mia soluzione consiste nel processare il testo piu' volte, contando le ricorrenze di PAROLA2, per poi modificare ulteriormente i pattern, ma cosi' i miei programmi perdono molto in termini di efficienza.

    Qualcuno puo' darmi una mano?!?


    Grazie e ciao!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Credo che basti aggiungere un ? :

    /PAROLA1((.|\n)*?)PAROLA2/

    La motivazione la trovi nel manuale RE del perl (paragrafo che inizia con <<By default, a quantified subpattern is "greedy", >> ).

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    4
    Effettivamente...

    FUNZIONA!

    Perche' il punto di domanda fa si' che si ricerchi il numero minimo di ricorrenze di un certo Pattern (mentre di default ricerca sempre il numero massimo)!

    Grazie mille per l'aiuto!

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.