Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559

    RegExp ricorsiva per stringa per trovare terne di valori anche intrecciati

    Ho una stringa di questo tipo

    "1,0,1,0,0,1,0,1,0,1"

    Con questa funzione cerco le terne composte da 1,0,1:
    codice:
    Function RegExResults(strTarget, strPattern)
    
        Set regEx = New RegExp
        regEx.Pattern = strPattern
        regEx.Global = true
        Set RegExResults = regEx.Execute(strTarget)
        Set regEx = Nothing
    
    End Function
    
            Set arrResults = RegExResults(testo, "1,0,1")
    
            'In your pattern the answer is the first group, so all you need is'
            sResult = ""
            For each result in arrResults
                if sResult = "" then
                    sResult = result.Submatches(0) &","& result.Submatches(1) &","& result.Submatches(2)
                else
                    sResult = sResult &","& result.Submatches(0) &","& result.Submatches(1) &","& result.Submatches(2)
                end if
            Next
            Set arrResults = Nothing
    Rispetto alla stringa passata, questa funzione recupera le terne 1,0,1 indicate in verde ma non la terza in rosso nella quale il primo 1 sarebbe l'ultimo della terna precedente.

    Come procedere per far recuperare tutte le terne anche sovrapposte?

    Roby

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,800
    curiosità:
    ma
    "1,0,1,0,0,1,0,1,0,1"
    diventerebbe anche
    "1,0,1,0,0,1,0,1,0,1"
    ?
    cioè 5 occorrenze?

    edit: 4 occorrenze

    riedit... quante occorrenze sono/sarebbero/dovrebbero essere?
    Ultima modifica di Vincent.Zeno; 07-07-2016 a 12:04

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ciao grazie.
    No, le occorrenze devono essere sequenziali o al massimo parzialmente sovrapposte con l'ultimo 1 di una terna che può essere contemporaneamente il primo 1 della terna successiva.
    Non ci sono salti.

    Roby

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,800
    capito

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,800
    ipotesi.

    -trovare l'occorrenza
    -contarne i caratteri
    -verificare che i quattro caratteri successivi corrispondano a ",0,1"
    -quindi inserire il risultato nel ciclo di stampa

    può essere?

    la stringa può aver solo la forma che hai esposto o può esser più lunga? ci possono essere più ridondanze?
    es 1,0,1,0,0,1,0,1,0,1,0,1
    Ultima modifica di Vincent.Zeno; 08-07-2016 a 10:29

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ciao grazie dell'interesse. Ieri sera ho cambiato strada, abbandonando le espressioni regolari.
    Poiché le occorrenze sono contenute in un campo di un database (una per record) ho effettuato una query per trovare tutte le occorrenze "0".
    Scorrendo il recordset ho verificato se prima e dopo ciascuna di esse fosse presente "1".
    In caso positivo ho la terna. In questo modo acquisisco tutti gli ID anche quelli sovrapposti.
    Devo dire che funziona!

    Roby

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.