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

    [reg exp] stringa con esclusione di caratteri

    Salve a tutti, ho una serie di stringe come queste

    1. "> <"
    2. "><"
    3. "></"
    4. "> </"

    Prima e dopo ci può essere qualsiasi cosa. Il numero di queste stringhe è arbitrario nella maxistringa che le contiene e non posso stabilirlo a priori (un po' come se fossero i tag di un file html).
    Ho bisogno di matchare le prime inserendo al posto dello spazio (se c'è) un "\n" escludendo tassativamente le seconde. Qualcuno mi aiuta con l'espressione regolare da scrivere?

    Grazie a chi mi risponderà
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Ma uno solo spazio o più spazi?
    Se è un solo spazio non vedo alcuna necessita di una reg exp...
    Basta che cerchi per una substring "> <" e allo spazio (che è sempre il secondo carattere) sostituisci '\n'
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    solitamente è uno spazio o zero spazi ma fare un sistema generale che gestisca anche più di uno spazio sarebbe perfetto
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    (?<=>) +(?=<)
    Questa regex fa al tuo caso, ma secondo si tratta di over engineering.
    N.B. quella regex (match in italiano) solo gli spazi, così puoi semplicemente fare la sostituzione, se vuoi che (match in italiano) anche i simboli > e < puoi scriverla così:
    > +<
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Me la spieghi di preciso per favore? Vorrei capirle oltre che usarle
    Ti ringrazio!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Partiamo dalla seconda che è più semplice: > +<
    ">" match di ">"
    " +" match di uno o più " ": il carattele "+" è un modificatore che indica che ci possono essere 1 o più ripetizioni della regexp che precede, in questo caso lo spazio
    "<" match di "<"

    Per la prima
    "(?<=>)" "?<=" serve al lookbehind: controlla che prima del tuo match sia presente la regexp che segue ( ">" ), ma non consuma i caratteri
    "(?=<)" "?=" serve al lookahed: uguale solo che controlla dopo anzichè prima
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Ecco infatti mi pareva ci fosse qualcosa inerente al lookahed che non conoscevo! Ancora non sono pratico con quelle tecniche. Ora sto bestemmiando su altre cose, appena ho due minuti provo e ti dico. Intanto grazie mille
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da Nunkij Visualizza il messaggio
    Ecco infatti mi pareva ci fosse qualcosa inerente al lookahed che non conoscevo! Ancora non sono pratico con quelle tecniche. Ora sto bestemmiando su altre cose, appena ho due minuti provo e ti dico. Intanto grazie mille
    Attento che comunque non tutte le implementazioni supportano lookbehind e lookahead..

    P.s. a parte il fatto che se sai che non si presenterà mai il caso di più spazi l'utilizzo di una regexp resta per me un over engineering, con un probabile calo prestazionale considerevole tra l'altro, specie se l'input è di una lunghezza rilevante...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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