Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Aiuto per RegExp

  1. #1

    Aiuto per RegExp

    Ciao a tutti,
    devo fare pulizia di un codice inserito da word facendo in modo che dalle impostazioni dei font rimuova tutto tranne il color ed il background.
    ad esempio se ho
    <font style="FONT-SIZE: 20pt; BACKGROUND: yellow; COLOR: red; FONT-FAMILY: &quot;AvantGarde Md BT&quot;; mso-highlight: yellow">
    dovrebbe restare solo
    <font style="BACKGROUND: yellow; COLOR: red;">
    stavo provando ad utilizzare le RegExp che però non conosco molto bene...
    in teoria ho pensato di dirgli:
    togli tutto ciò che comincia per "FONT-" fino a ";" o """ (chiuse virgolette)

    ... qualche dritta?
    Chi Non RisiKa noN RosiKa

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao diwla,

    i parametri nei tag scritti da word sono delimitati da apice perché all'interno possono avere le virgolette.
    Quindi tu vuoi cancellare tutto quello che inizia con font- e finisce con ; o '
    però se è il caso che finisce con ' lo devi mantenere
    io userei questo pattern
    codice:
    font-[^;']*?;|(')
    così mantengo l'eventuale ' finale
    un esempio:
    codice:
    stringa="<p class=MsoNormal>Questa è una prova</p>" & vbCrLf
    stringa=stringa & "<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>" & vbCrLf
    stringa=stringa & "<span style='font-size:18.0pt;background: yellow;font-family:""Comic Sans MS"";color:green;"": yellow;mso-highlight:yellow'>" & vbCrLf
    stringa=stringa & "Il testo è stato scritto con word e incollato in html</span>[/b]" & vbCrLf
    stringa=stringa & "<b style='mso-bidi-font-weight:normal'><span style='font-size: 18.0pt;font-family:""Comic Sans MS"";color:green'><o:p></o:p></span>[/b]</p>" & vbCrLf
    stringa=stringa & "<p class=MsoNormal><i style='mso-bidi-font-style:normal'><span style='font-size:16.0pt;font-family:Arial;color:blue;"":lime; mso-highlight:lime'>ciao</span>[/i]<i style='mso-bidi-font-style:normal'>" & vbCrLf
    stringa=stringa & "<span style='font-size:16.0pt;font-family:Arial;color:blue'><o:p></o:p></span>[/i]</p>" & vbCrLf
    
    Response.Write stringa & "<hr>" & vbCrLf
    
    set re=Server.CreateObject("VBScript.RegExp")
    re.Pattern="font-[^;']*?;|(')"
    re.Global=true
    re.Multiline=true
    re.IgnoreCase=true
    stringa=re.Replace(stringa,"$1")
    
    Response.Write stringa
    che dici?

  3. #3
    bella willybit... sei un grande come sempre!!
    posso approfittare della tua gentilezza e chiederti se mi spieghi un attimo come funziona?!?

    font-[^;']*?;|(')

    vuol dire una cosa del tipo
    da "font-" fino a ";'" oppure ";" o "'"

    quindi
    ^ = fino a
    | = o
    *? = oppure

    ci sono?
    Chi Non RisiKa noN RosiKa

  4. #4
    un altro piccolo dubbio:
    mi pare che di solito nel testo importato da word vengano utilizzate le virgolette (") e non l'apice(')...

    ma se modificoil pattern da
    font-[^;']*?;|(')
    a
    font-[^;"]*?;|(")

    non funziona più nulla...
    Chi Non RisiKa noN RosiKa

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    allora... in questo caso il *? non serviva... bastava *
    ti spiego la re
    codice:
    font-[^;']*;|(')
    font- = esattamente font-
    [^;'] = qualunque cosa diversa da ; e '
    * =zero o più occorrenze di quello che lo precede in questo caso 0 o più occorrenze di [^;']
    ; = esattamente ;
    | = OR
    (') = esattamente il carattere ' essendo tra parentesi rimane memorizzato come submatch

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367

    Re: Aiuto per RegExp

    tu hai fatto questo esempio
    Originariamente inviato da diwla
    <font style="FONT-SIZE: 20pt; BACKGROUND: yellow; COLOR: red; FONT-FAMILY: &quot;AvantGarde Md BT&quot;; mso-highlight: yellow">
    dovrebbe restare solo
    <font style="BACKGROUND: yellow; COLOR: red;">
    che è sbagliato... se il parametro style è delimitato dalle virgolette al suo interno non può più usare le virgolette (che chiuderebbero il parametro)
    io per farti l'esempio ho copiato e incollato da word e mi ha dato quello che vedi

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.