La expresión regular parece estar bien, ya que la primera línea de la línea reemplazar correctamente la subcadena con "HelloWorld", pero la misma expresión no coincidirá en este último ya que no puedo ver "¿por qué no va a ir al mundo?" en la consolaPattern.matches no funciona, mientras que replaceAll hace
System.out.println(current_tag.replaceAll("^[01][r]\\s", "helloworld"));
if (Pattern.matches("^[01][r]\\s", current_tag)) { System.out.println("whynothelloworld?");}
Parece que todos menos nosotros cometimos ese error cuando llegamos a Java. Cómo escapé de alguna manera, no lo sé. De alguna manera, tuve la suerte de usar 'encontrar', nunca' coincide', y esto fue antes de notar la diferencia. Supongo que fue porque estaba haciendo coincidencias incrementales en ese primer proyecto de Java, hace mucho (ish) ahora. Aún así, considero que es una falla de diseño/interfaz de usuario que hicieron esta tontería. – tchrist
Aún más raro es Python: 're.match' ancla implícitamente la expresión regular al comienzo de la cadena (pero no al final) mientras que' re.search() 'se comporta como se esperaba (como' matcher.find() 'en Java) –
ahora está claro :) tnx, ¡funciona como un encanto! –