Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16

Hybrid View

  1. #1
    ... va detto che, se lo scopo finale è giusto verificare un codice fiscale, si fa molto prima con una regex (seguita dai vari step di validazione delle varie componenti).
    Ultima modifica di MItaly; 07-10-2013 a 21:36
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    ... va detto che, se lo scopo finale è giusto verificare un codice fiscale, si fa molto prima con una regex.
    non ho ancora trovato un esempio senza dover ricorrere a programmi come flex.

  3. #3
    Per estrarre i vari pezzi la regex (in sintassi Perl/POSIX/...) sarebbe del tipo
    codice:
    ([A-Z]{3})([A-Z]{3})([0-9]{2})([A-Z])([0-9]{2})([A-Z][0-9]{3})([A-Z])
    La sintassi esatta per usarla dipende dalla libreria di regex che intendi usare (in C di base non c'è nulla di incluso; a seconda della piattaforma puoi usare le regex POSIX, pcre, ...), comunque dopo che hai applicato la regex al tuo input dovresti ottenere subito se la stringa corrisponde al pattern e, in questo caso, ad ogni gruppo di cattura corrisponde un "pezzo" del codice fiscale.
    Ultima modifica di MItaly; 07-10-2013 a 22:02
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Per estrarre i vari pezzi la regex (in sintassi Perl/POSIX/...) sarebbe del tipo
    codice:
    ([A-Z]{3})([A-Z]{3})([0-9]{2})([A-Z])([0-9]{2})([A-Z][0-9]{3})([A-Z])
    La sintassi esatta per usarla dipende dalla libreria di regex che intendi usare (in C di base non c'è nulla di incluso; a seconda della piattaforma puoi usare le regex POSIX, pcre, ...), comunque dopo che hai applicato la regex al tuo input dovresti ottenere subito se la stringa corrisponde al pattern e, in questo caso, ad ogni gruppo di cattura corrisponde un "pezzo" del codice fiscale.

    credo che sia più versatile usare un generatore in luogo di una libreria, hai più spazio di manovra.

  5. #5
    Certo, ma, a meno di non star scrivendo un compilatore o un interprete, nel 99% dei casi una regex basta e avanza (ed è meno problematica da integrare nel resto del programma e nel build system).
    Sicuramente non scomoderei flex per fare il parsing di un codice fiscale; in un linguaggio come Perl o Python che include le regex nella sua libreria standard (o addirittura nel "core" del linguaggio) userei una regex, in C probabilmente scriverei il codice necessario a mano (visto che il codice fiscale ha una struttura estremamente semplice, e richiede comunque controlli manuali).

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Certo, ma, a meno di non star scrivendo un compilatore o un interprete, nel 99% dei casi una regex basta e avanza (ed è meno problematica da integrare nel resto del programma e nel build system).
    Sicuramente non scomoderei flex per fare il parsing di un codice fiscale; in un linguaggio come Perl o Python che include le regex nella sua libreria standard (o addirittura nel "core" del linguaggio) userei una regex, in C probabilmente scriverei il codice necessario a mano (visto che il codice fiscale ha una struttura estremamente semplice, e richiede comunque controlli manuali).

    ciao,
    in realtà sto andando oltre al codice fiscale; vista la "potenza" di tale generatore lo sfrutto per costruirmi un analizzatore sintattico per un linguaggio costituito da oltre 600 parole chiave, mi ci vorrà molto tempo.
    Mi chiedevo se esistono già sorgenti flex per tutti i linguaggi, mi eviterebbe un sacco di lavoro.

    grazie

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.