Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    estrarre il 'body' con espressioni regolari

    Ho provato ad usare:
    codice:
    ^.*[\s]*<body.*[\s]*>(.*[\s]*.*)</body.*[\s]*>.*[\s]*$
    per estrarre il body con espressioni regolari.

    Non mi convince per niente :master:

    Qualche aiuto?
    Pietro

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Perche` tutti quei caratteri spazio tra quadre e scritti esplicitamente?
    A parte che le quadre non servono nel tuo caso, ma gli spazi sono compresi nei caratteri individuati dal punto, quindi non serve scriverli esplicitamente.
    Invece ci vogliono le backslash davanti a: < > /

    E poi, cosa vuoi ottenere?
    Data una stringa che contiene la pagina vuoi estrarre quanto contenuto tra i tag body? Io farei cosi`:
    codice:
    /\<body[^\>]*\>(.+?)\<\/body/
    Altro sistema e` usare .innerHTML dell'ogetto document oppure document.body (da applciare chiaramente ad una pagina aperta nel browser).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho usato quella stringa perchè ho ricordato che il punto è:
    qualunque carattere, eccentuata nuova riga e, tra <body....> e </body>

    vi sono pure salti riga***

    inoltre non posso utilizzare innerHTML perchè voglio imparare una buona volta a capire le espressioni regolari
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se ci sono interruzioni di riga, devi usare il /s alla fine della RegExp:
    /\<body[^\>]*\>(.+?)\<\/body/s

    Se il body puo` essere scritto anche maiuscolo, devi usare anche il /i:
    /\<body[^\>]*\>(.+?)\<\/body/si

    Nota che queste info le ho ricavate dal manuale RE del Perl: i manuali di JS non sono cosi` dettagliati (quelli che ho visto io, per lo meno).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    mi sembra fosse 'm' per il multiline, o ricordo male?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Allora, mi cospargo il capo di cenere e confesso:
    non mi serve in javascript, ma nel server.
    Il problema è che (non me ne voglia nessuno) solo qui ho trovato chi capisca le espressioni regolari

    detto questo, seguo i vostri consigli e ci provo.
    Pietro

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da fcaldera
    mi sembra fosse 'm' per il multiline, o ricordo male?
    Ricordi bene, ma credo che quello che serve e` il /s per far includere anche i caratteri \n nei \.

    Se ho capito bene, il /m trasforma ^ e $ a individuare l'inizio/fine della intera stringa e non i singoli inizi/fine delle righe; invece il /s trasforma il . a includere anche i \n .

    codice:
    m   Treat string as multiple lines.  That is, change "^" and "$" from matching
        the start or end of the string to matching the start or end of any line
        anywhere within the string.
    
    s   Treat string as single line.  That is, change "." to match any character
        whatsoever, even a newline, which normally it would not match.
    
        The "/s" and "/m" modifiers both override the $* setting.  That is, no mat-
        ter what $* contains, "/s" without "/m" will force "^" to match only at the
        beginning of the string and "$" to match only at the end (or just before a
        newline at the end) of the string.  Together, as /ms, they let the "."
        match any character whatsoever, while still allowing "^" and "$" to match,
        respectively, just after and just before newlines within the string.
    (fonte: man perlre).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da pietro09 Il problema è che (non me ne voglia nessuno) solo qui ho trovato chi capisca le espressioni regolari
    Su alcuni problemi (tipo RegExp) io rispondo anche nel forum CGI e Perl. Per altri forum non so dire - non li seguo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    mi sembrava che gli unici modificatori ammessi in javascript fossero (nell'ordine)

    /g - global
    /i - case insensitive
    /m - multiline

    /m ricordo di averlo usato per cercare in un blocco di testo su più righe.


    Edit
    vedi http://www.regular-expressions.info/javascript.html
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ringrazio tantissimo, ciao
    Pietro

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 © 2026 vBulletin Solutions, Inc. All rights reserved.