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).