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

    esrpessione regolare {\\?(.*)\\?\\}

    Chi mi sa dire cosa vuol dire l'espressione regolare {\\?(.*)\\?\\}
    grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: esrpessione regolare {\\?(.*)\\?\\}

    Originariamente inviato da saracenovale
    Chi mi sa dire cosa vuol dire l'espressione regolare {\\?(.*)\\?\\}
    Ci vorrebbe un \\ prima della { se vuoi matchare proprio una graffa { (le { } sono caratteri speciali nelle regex).

    Comunque, supponendo che sia "\\{\\?(.*)\\?\\}":

    Una graffa { cui segue un ? cui seguono zero o più caratteri (presi in "gruppo") cui segue un ? cui segue un }

    In pratica può matchare qualcosa del tipo: {?blablabla?}
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    E il doppio slash \\ che vuol dire?

    Ho un programma che data l'espressione regolare ER= {\\?(.*)\\?\\} e data una stringa, pesca dalla stringa quella parte che matcha l'ER

    Input dato al parser:
    <password>{?A?}</password>
    Output ottenuto dal parser:
    A

    Input dato al parser:
    <password>{?A?}</password><password>{?B?}</password>
    Output ottenuto dal parser:
    A?}</password><password>{?B

    come è possibile? è sbagliato il programma del parser?
    grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da saracenovale
    E il doppio slash \\ che vuol dire?
    In una stringa "literal" \\ vuol dire il carattere \.

    String a = "aaa\\bbb";

    questa stringa contiene aaa\bbb. Il \\ è così doppio, solo perché è scritto nel sorgente!

    Originariamente inviato da saracenovale
    Ho un programma che data l'espressione regolare ER= {\\?(.*)\\?\\}
    Ripeto che { è speciale e c'è da mettere \\{

    Originariamente inviato da saracenovale
    Input dato al parser:
    <password>{?A?}</password>
    Output ottenuto dal parser:
    A

    Input dato al parser:
    <password>{?A?}</password><password>{?B?}</password>
    Output ottenuto dal parser:
    A?}</password><password>{?B

    come è possibile?
    Questo è dovuto al fatto che .* è "greedy" (ingordo) e cerca di catturare il più possibile, non il meno possibile.
    Se vuoi catturare il meno possibile, allora:

    String pattern = "\\{\\?(.*?)\\?\\}";

    Nota il ? dopo * che lo rende "reluctant" (riluttante e quindi cattura il meno possibile).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Mitico!! funziona grazie mille!!

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.