Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    19

    Assegnare regularExpression a variabile

    Ciao, io ho un problema che non riesco a risolvere. VI comunico che ho cominciato con le regexp da poco quindi probabilmente non le conosco ancora benissimo. Io volevo creare un programma che risolveva una equazione di secondo grado attraverso una regular expression. CIoè l'utente inserisce l'equazione e la regular expression estrapola i vari termini cioe: a-b-c. Ora l'unico problema che ho è quello di assegnare alla variabile $a il valore di a estrapolato con le reg exp. Non so sono stato chiaro! Comunque se non è chiaro ditemelo! Grazie mille!

  2. #2
    fai un esempio
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    19
    ok. ad esempio:

    l'utente inserisce l'equazione 1xa+3xb+5c
    il programma attraverso la regular expression estrapola la stringa 1xa
    la stringa 1xa viene salvata in una variabili $xa;
    E così anche con xb e c.
    Non so se sono stato chiaro.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Veramente le equazioni di secondo grado io le conosco in questa forma:
    37x^2 + 4x + 7 = 0
    dove il 37 e` il valore di $a, il 4 il $b e il 7 il $c (che possono anche essere espresse come y= ... , se si tratta di curve di secondo grado).
    Probabilmente nel tuo progetto puoi imporre di avere tutto dalla stessa parte dell'uguale, in modo da semplificare l'estrazione.

    L'ordine non e` significativo, quindi il programma deve anche riconoscere quali sono i vari termini.

    Non so se si puo` fare tutto quanto scritto da me con un'unica RE. Forse si puo` se l'ordine e` sempre lo stesso, mentre la vedo dura se l'ordine puo` cambiare.

    Comunque ecco una bozza (l'inizio del lavoro):
    codice:
    $str = '37x^2 + 4x + 7 = 0';
    $str ~= s/\s//;             # tolgo tutti gli spazi
    $str ~= /^(.+?)([\+\-].+?)?([\+\-].+?)?=/;
    # in $1, $2, $3 ora sono i tre pezzi, completi di segno
    #Ora occorre capire dove e` contenuto x^2, dove x (senza ^2) e dove non c'e` la x
    Se invece puoi imporre che l'ordine sia fisso, la cosa potrebbe diventare:
    codice:
    $str = '37x^2 + 4x + 7 = 0';
    $str ~= s/\s//;             # tolgo tutti gli spazi
    $str ~= /^(?:(.*?)x\^2)?(?:([\+\-].*?)x)?(?:([\+\-].*?)?=/;
    $a = $1;
    $b = $2;
    $c = $3;
    # se uno dei campi e` vuoto o contiene solo il segno +, va sostituito con il valore 1,
    #   se contiene solo il  segno - va sostituito con -1;
    #   negli altri casi va interpretato con sscanf
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    19
    grazie per il codice ma volevo chiedervi l'ultima cosa nel primo codice postato da Mich:
    codice:
    $str = '37x^2 + 4x + 7 = 0'; $str ~= s/\s//;             # tolgo tutti gli spazi $str ~= /^(.+?)([\+\-].+?)?([\+\-].+?)?=/; # in $1, $2, $3 ora sono i tre pezzi, completi di segno #Ora occorre capire dove e` contenuto x^2, dove x (senza ^2) e dove non c'e` la x
    Mich dice che $1 $2 $3 sono i tre pezzi completi cioè: le tre parti della regular expression? E poi si chiamano $1-$2-$3 automaticamente? Grazie e scusate l'ignoranza!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Una delle belle cose delle RE (in Perl, ma anche in JS e in altri linguaggi) e` che puoi estrarre dei pezzi, che vengono salvati automaticamente nelle variabili $1, $2, ...
    Tali variabili esistono fino alla prossima RE o altra funzione/operazione che le sovrascrive.

    Per avere tali varibili basta usare le prentesi. Pero` le parentesi (?: ... ) non salvano gli elementi.

    Nota che tutto questo e` scritto nel
    man perlre
    che e` sicuramente installato nel tuo sistema dove hai il Perl. In alternativa lo trovi in rete.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    19
    ok grazie mille

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.