Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    regexp: trovare determinate parole in un testo

    ciao,
    ho un problema che pensavo di risolvere con le regexp.
    dal database prelevo un elenco delle tabelle. a questo punto devo controllare quali tabelle sono contenute nelle diverse pagine della mia applicazione.
    con fso recupero ogni pagina ed il relativo contenuto. a questo punto ho scritto la seguente funzione per parsare la pagina:

    codice:
    Function EstraiOggettiDb(stringa , stringaPattern)
        
        Dim tmpArray, v, rex 
        
        Set rex = Server.CreateObject("VBScript.RegExp")
        Set dic = Server.CreateObject("Scripting.Dictionary")
        
        dic.CompareMode = vbTextCompare
        
        With rex
            
            .Multiline = True
            .Global = True
            .IgnoreCase = True
            .pattern = "(" & stringaPattern & ")"
            
            Set tmpArray = .Execute(stringa)
            
            For Each v In tmpArray
    
                If Not dic.Exists(CStr(v)) Then
                    dic.Add CStr(v), v
                End If
                
            Next 'v
            
            Set EstraiOggettiDb = dic
            
        End With
        
        Set dic = Nothing
        
    End Function
    la funzione riceve in input
    stringa: il contenuto di una pagina
    stringaPattern: un elenco delle tabelle separate da pipeline
    e restituisce un dictionary contenente le tabelle utilizzate in quella pagina.

    così com'è funzia, ma mi piacerebbe migliorarla un po': avrei bisogno, per ex, che venissero saltate le stringhe commentate tipo:

    'sql = "SELECT * FROM miaTabella"

    e se vi viene in mente qualcos'altro è ben accetto
    xxx

  2. #2
    pattern
    codice:
    .pattern = "(?:\n|\r|^)[^']*(" & stringaPattern & ")"
    [l'ho scritta a mente... spero non ci siano errori :P]

    così ritrovi tutte le righe in cui c'è il pattern e dove non c'è il '...

    il problema è una stringa come questa

    bla = "come e' che va"

    se il tuo pattern è VA
    non viene identificato.

    se non esiste caso in cui prima della tabella possa esserci il carattere ' allora quel pattern è ok

    altrimenti devi ricorrere al lookahed...
    san imente saluta

    * http://simonecingano.it *

  3. #3
    ti ringrazio molto, l'ho provata e funzia.
    per il problema dell'apice in una query prima del nome della tabella devo verificare se esistono dei casi.
    per estrarre successivamente da ogni riga il nome vero e proprio della tabella (e solo quello) secondo te posso riproporre il path puro e semplice che ho postato sopra facendo una sorta di doppio filtro oppure c'è di meglio?
    xxx

  4. #4
    Originariamente inviato da Alethesnake
    per il problema dell'apice in una query prima del nome della tabella devo verificare se esistono dei casi.
    esistono eccome

    se lasci gli apici attivi, uno può chiudere la stringa e aggiungere con ; una funzione di delete delle tabelle di struttura di access

    il DB è fregato :P

    se le doppi, valgono come delle "'" dentro al testo
    e se uno mette una ' non restituisce nessun errore

    è una cosa abbastanza normale
    san imente saluta

    * http://simonecingano.it *

  5. #5
    Originariamente inviato da imente
    esistono eccome

    se lasci gli apici attivi, uno può chiudere la stringa e aggiungere con ; una funzione di delete delle tabelle di struttura di access

    il DB è fregato :P

    se le doppi, valgono come delle "'" dentro al testo
    e se uno mette una ' non restituisce nessun errore

    è una cosa abbastanza normale
    aspetta, dopo il nome della tabella/e è abbastanza normale che ci siano degli apici se uso una WHERE, ma prima del nome tabella un utente non può mettere nulla a meno che non sia io a dirgli qualcosa tipo "scrivi in questo form il nome dei campi che vuoi estrarre.."
    l'unico caso che mi viene in mente può essere:

    sql = "SELECT 'campo:' & campoDb FROM tabella"
    xxx

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.