Originariamente inviato da hackerdm
grazie mille mi sei stato di grande aiuto, cmq se a qualcun altro potesse servire io ho usato questa espressione regolare per togliere i tag start/end

Pattern pattern = Pattern.compile("(?<=\\[START\\])(.*?)(?=\\r\\n\\[END\\])", Pattern.DOTALL)
Questa è una variante più complessa perché hai usato i "lookahead" e "lookbehind".

Ma pure con quella che ti ho dato sopra io gli start/end non li avresti avuti .... semplicemente bastava prendere il group(1). Con la tua il group(0) (o semplicemente group() ) prende già il contenuto senza gli start/end, perché i lookahead/lookbehind per definizione sono "zero-width", non catturano nulla ma "guardano" solo.

E infine 2 cose: in effetti il pattern migliore è .*? perché diventa "reluctant" (non ci ho pensato di scrivertela sopra nella mia) che è meglio se devi avere più occorrenze.
Dato che nella tua l'intero match (ripeto: è il gruppo 0) è già solo il contenuto esclusi gli start/end, potresti anche evitare le parentesi tonde attorno a .*? perché sono superflue in quanto creano comunque il gruppo 1 che ora non ti serve più.

Prima di "sparare" espressioni regolari, cerca di comprenderle prima. (non vuol essere una critica)