Un poco diversión con Java esta vez. Quiero escribir un programa que lee un código de la entrada estándar (línea por línea, por ejemplo), como:Java - expresión regular que encuentra comentarios en el código
// some comment
class Main {
/* blah */
// /* foo
foo();
// foo */
foo2();
/* // foo2 */
}
encuentra todos los comentarios en él y los elimina. Estoy tratando de utilizar expresiones regulares, y por ahora he hecho algo como esto:
private static String ParseCode(String pCode)
{
String MyCommentsRegex = "(?://.*)|(/\\*(?:.|[\\n\\r])*?\\*/)";
return pCode.replaceAll(MyCommentsRegex, " ");
}
pero parece no funcionar para todos los casos, por ejemplo:
System.out.print("We can use /* comments */ inside a string of course, but it shouldn't start a comment");
Cualquier consejo o ideas diferentes de regex? Gracias de antemano.
Creo que su ejemplo exacto es chungo: el comentario cercano dentro de la cadena cerrará el comentario. Sin embargo, un comentario abierto dentro de una cadena que no está en un comentario no iniciará uno. – Grandpa
Sí, mi mal. Estaba tratando de dar algo complicado aquí y me engañé a mí mismo. – brovar
Agradecería si pudiera consolidar y ponerlo en la respuesta después de haberlo probado. También estoy buscando una solución similar – Ravisha