Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188

    [Regexp] Espressione più 'interna'

    Premesso che praticamente non so niente di espressioni regolari... non le ho mai capite bene; ma ho notato che se inserisco dei limitatori, essi restituiscolo il testo MASSIMO se essi si ripetono.
    E' possibile invece restituire il testo MINIMO?

    Non si è capito una mazza?
    Ecco un esempio.

    Dato il testo:
    codice:
    Lo zio peppino ha 147 anni e mi sa che... Però, dai, non è detto! Carmelo ne ha 256 e sta benone. Ma ancora per quanti anni sarà così?
    voglio ricavare quel 147 (e quindi scoprire il segreto della longevità).

    Quindi ecco la mia preg_match (se devo usare altro come eregi o soci, ditelo, io non me ne intendo....):
    codice:
    "peppino ha(.*)anni"
    Essa però restituisce tutto quanto compreso fra i PEPPINO e gli ANNI estremi, ovvero:
    codice:
    147 anni. Però non è detto... Carmelo ne ha 256 e sta benone. Ma ancora per quanti
    mentre invece, appunto, a me interesserebbe solo quel 147 (in questo esempio apposta creato è un numero, nel mio caso reale al 90% delle volte lo sarà, ma potrebbe essere anche un testo tipo "NA" o altro, quindi mi serve un filtro che isoli quel punto, più che il suo valore numerico).

    Grazie.

    NOTA: testato anche con http://www.lumadis.be/regex/test_regex.php#pointeur_aff

  2. #2

    Re: [Regexp] Espressione più 'interna'

    Originariamente inviato da selidori
    "peppino ha(.*)anni"

    "peppino ha(\d+)anni"

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188
    Grazie dell'aiuto, ma non funziona ancora.
    Il mio applicativo (in php) non resituisce proprio nulla (neppure errori, insomma non trova il pattern) risultato confermato dal già riportato http://www.lumadis.be/regex/test_regex.php#pointeur_aff riporta:

    ereg:
    Nothing found !


    Per le altre funzioni, ecco gli errori di output:

    preg_match:
    [function.preg-match]: Delimiter must not be alphanumeric or backslash

    preg_match_all():
    [function.preg-match-all]: Delimiter must not be alphanumeric or backslash

  4. #4

    Re: Re: [Regexp] Espressione più 'interna'

    /(\d+)/m
    e prelevi solo la prima occorrenza di $1

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188

    Re: Re: Re: [Regexp] Espressione più 'interna'

    Originariamente inviato da menphisx
    /(\d+)/m
    Funziona, ma solo se è un numero
    Come detto nel primo post, seppur nella maggior parte dei casi quello sarà effettivamente un numero, esso potrebbe anche non esserlo.

    Insomma io devo usare per forza i delimitatori di testo che son sicuro sono sempre uguali, non i numeri contenuti, altrimenti me la sarei cavata più facilmente passando ad uno ad uno i caratteri della stringa, conservando solo le cifre e poi usando solo il numero più interno trovato.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    A volte le soluzioni ad un problema potrebbero essere differenti in base al linguaggio e/o allo strumento utilizzato.

    Visto che si parla di PHP nello specifico, sposto la discussione nel forum che tratta questo argomento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188

    Re: Moderazione

    Visto che si parla di PHP nello specifico, sposto la discussione nel forum che tratta questo argomento.
    Ok, no problema, ma quello che dici non è propriamente vero.
    Le espressioni regolari sono perfettamente identiche in tutti i linguaggi ecco perchè esistono libri che si intitolano ESPRESSIONI REGOLARI e non ne esistono che si intitolano "ESPRESSIONI REGOLARI IN PHP".
    E' difatti un metalinguaggio superiore a qualsiasi ambiente (e non si parla solo di programmazione pura, anche la riga di comando delle bash linux o molti sistemi operativi proprietari come IOS di Cisco le usano).
    Difatti in questo forum sono presenti altre domande sulle espressioni regolari e giustamente non è necessario ne' utile specificare il linguaggio.
    Se proprio le si vuole abbinare ad un linguaggio, allora forse ha senso abbinarle a PERL solo perchè in quell'ambiente sono più usate e famose (gestendole di fatto meglio ed essendo nato, il PERL, proprio per lavorare sui testi, ecco perchè è famoso), ma comunque la vedrei una cosa riduttiva.
    Sarebbe un po' come dire
    'Il minutaggio di una canzone cambia a seconda del suo stile, per questo un brano rock di 4minuti e 27 secondi dura di più di un brano jazz di quattro minuti e ventisette secondi".

    Comunque, ripeto, nessun problema (anzi ci guadagno in visibilità...) volevo solo chiarire la cosa.

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.