RaUleX escribió:Prueba el método chapuza

y cambia
String resultado = encaja.replaceAll("
abra");
por
String resultado = encaja.replaceAll(" abra ");Y observa que hay un espacio antes de
y después de Es un poco bastante ñapa pero igual te vale
Un saludo
no me vale, pq en vez de un espacio puede haber un . una , un; etc etc
pero gracias de todos modos.
EDITO:bueno, al final me he currao este codigo ke parece ke funciona, aunke no uso expresiones regulares. Lo pongo por si a alguien le sirve.
int indexPatron=0;
int auxIndex=0;
boolean negrita=true;
String patron="abra";
String texto="Me da la palabra de ke cdo abra la puerta no entrara la abra";
String nuevoTexto="";
String nuevoTexto2="";
while((indexPatron=texto.indexOf(patron,indexPatron))!=-1){
negrita=true;
if(indexPatron!=0){
if( (Character.getNumericValue(texto.charAt(indexPatron-1))>=10) &&(Character.getNumericValue(texto.charAt(indexPatron-1))<=35))
negrita=false;
}
if(negrita){
if ( (indexPatron)+patron.length()!=texto.length())
if( (Character.getNumericValue(texto.charAt(indexPatron+patron.length()))>=10) &&(Character.getNumericValue(texto.charAt(indexPatron+patron.length()))<=35))
negrita=false;
}
nuevoTexto+=texto.substring(auxIndex,indexPatron);
if(negrita)
nuevoTexto+="
"+patron+"";
else nuevoTexto+=patron;
auxIndex=indexPatron+patron.length();
indexPatron=indexPatron+patron.length();
}
nuevoTexto+=texto.substring(auxIndex,texto.length());
patron=Character.toUpperCase(patron.charAt(0))+patron.substring(1,patron.length());
auxIndex=0;
while((indexPatron=nuevoTexto.indexOf(patron,indexPatron))!=-1){
negrita=true;
if(indexPatron!=0){
//out.println(Character.getNumericValue(texto.charAt(indexPatron-1)));
if( (Character.getNumericValue(nuevoTexto.charAt(indexPatron-1))>=10) &&(Character.getNumericValue(nuevoTexto.charAt(indexPatron-1))<=35))
negrita=false;
}
if(negrita){
if ( (indexPatron)+patron.length()!=nuevoTexto.length())
if( (Character.getNumericValue(nuevoTexto.charAt(indexPatron+patron.length()))>=10) &&(Character.getNumericValue(nuevoTexto.charAt(indexPatron+patron.length()))<=35))
negrita=false;
}
nuevoTexto2+=nuevoTexto.substring(auxIndex,indexPatron);
if(negrita)
nuevoTexto2+="
"+patron+"";
else nuevoTexto2+=patron;
auxIndex=indexPatron+patron.length();
indexPatron=indexPatron+patron.length();
}
nuevoTexto2+=nuevoTexto.substring(auxIndex,nuevoTexto.length());
out.println(nuevoTexto2);