Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449

    Regular Expression

    ciao.
    sono un po' poco pratico di regular expression e avrei bisogno di un aiuto.

    Devo suddividere una stringa contenente un'espressione logica estraendo una per volta le condizioni di primo livello in AND

    Esempio

    Stringa: A AND (B OR C AND D) AND E
    Risultato:
    [1] -> A
    [2] -> (B OR C AND D)
    [3] -> E

    Ovviamente A,B,C,D,E possono essere anche condizioni più complesse

    Come è fatta la regular expression che mi permette di fare una cosa del genere?
    S'i fosse foco, arderei 'l mondo

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    56

    hhmm

    hmm un po' difficile la tua.. dovresti tipo fare un albero sintattico... se sei sotto linux puoi aiutarti con il grep e l'opzione -E ke supporta le regex estese, semmai cmq consulta il man.. poi esiste anke egrep...e altri simili

    x il tuo caso, hmm intanto io cercherei di individuare le parentesi.. farei tipo una regex: '('.*')' ora nn mi ricordo se le parentesi sono caratteri speciali o no.. se no nn ci voglioni gli apici.. cmq la struttura è di quel tipo, il primo carattere deve essere una parentesi, poi il punto significa qualsisasi carattere e * vuol dire ke prendi il carattere precedente in questo caso il punto 0 o più volte... alla fine ci deve essere un altra parentesi,

    ah ora ke mi viene inmente sotto linux.. se hai la KDE ci dovrebbe essere un interrassante editor di regex ke ti fa anke le anteprime .. mi pare si chiamasse kregexeditor o qualcosa di simile.. cerca lì nel menù, io avevo la slackware appena installata e ce l'avevo già... almeno puoi testare le regex lì.. cmq è difficile quello ke ti chiede il problema forse ti può' aiutare un analizzatore lessicale tipo il flex.. stai facendo un corso di compilatori all'uni ? io sta roba l'ho studiata giusto là...

    spero di esserti stato un po' utile

    ciao ciao

    SommoVir

  3. #3
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    purtroppo non ho un linux a portata di mano.

    per adesso analizzo la stringa con un ciclo for, però mi soddisfa poco. Vorrei qualcosa di un po' più performante.

    Grazie comunque
    S'i fosse foco, arderei 'l mondo

  4. #4
    Per risolvere il problema dovresti scrivere un programma con un linguaggio che consenta la ricorsione.

  5. #5
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    a grandi linee
    ([A-Z]) AND (\([A-Z ]+\)) AND ([A-Z])
    è molto specifica ma è un inizio

  6. #6
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Il mio consiglio è di utilizzare un generatore di parser. Ti scrivi una grammatica per il tuo "mini-linguaggio" ed il problema è risolto.

    Se utilizzi c/c++ c'è yacc (da utilizzare in accoppiata con lex, che genera analizzatori lessicali); è molto semplice una volta capito i concetti base.

    Sotto java invece c'è javacc, che forse è un po più complesso.

    Ciao
    Linux user number 403381

    Stop TCPA!

  7. #7
    Salve , avrei un problema simle : fare un controllo sintattico di una espressione logica.
    controllando parentesi, operatori..
    come potrei procedere?
    grazie

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da S.Ilvestri
    Salve , avrei un problema simle : fare un controllo sintattico di una espressione logica.
    controllando parentesi, operatori..
    come potrei procedere?
    Come da Regolamento, apri una nuova discussione per affrontare il tuo problema specifico, indicando il linguaggio di riferimento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.