Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Poker32
    Registrato dal
    May 2001
    Messaggi
    240

    Errata lettura di una stringa

    perchè non riesco a fare funzionare bene questa funzione?

    deve prendermi il testo contenuto tra " " , ma solo quello che incontra la prima volta dall'inizio della stringa.

    es.
    la stringa é contenuta nella variabile $_ ed è del tipo:
    (campo_1:"dato_1"; campo_2:dato_2; campo_3:"dato_3"; campo_4:dato_4


    la funzione che uso è:
    if(($s) = $_ =~ /campo_1:\"(.+)\"/){}


    il risultato in $s è del tipo:
    "dato_1"; campo_2:dato_2; campo_3:"dato_3"

    quindi considera gli apici più esterni e non i primi due

    perchè???

    come faccio?

  2. #2
    Ciao,

    io farei:

    if (/[^"]+"([^"]+)"/) {
    $dato = $1;
    }
    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
    Sep 2001
    Messaggi
    21,188
    Non e` che io sia un genio nelle RE, ma io farei diversamente:

    /campo_1:\"(.+?)\"/

    (con il ? dopo il +).

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

  4. #4
    Ciao,

    già... ma la tua RE presuppone che ad avere la "" sia sempre il primo campo.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Direi che presuppone che l'argomento del campo_1 sia sempre racchiuso tra virgolette, ma non fa richieste sulla posizione di tale campo nella stringa.

    In pratica ho solo aggiunto il ? che fa in modo di prendere solo fino alla prima virgoletta di chiusura.

    La tua, shishii, prende quanto compreso tra il primo carattere " e il secondo.

    Ora sta a Poker vedere cosa gli fa piu` comodo.

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

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.