Un po 'di divertimento con Java questa volta. Voglio scrivere un programma che legge un codice da standard input (riga per riga, per esempio), come:Java - espressioni regolari che trovano commenti nel codice
// some comment
class Main {
/* blah */
// /* foo
foo();
// foo */
foo2();
/* // foo2 */
}
trova tutti i commenti in esso e li rimuove. Sto cercando di usare le espressioni regolari, e per ora ho fatto qualcosa di simile:
private static String ParseCode(String pCode)
{
String MyCommentsRegex = "(?://.*)|(/\\*(?:.|[\\n\\r])*?\\*/)";
return pCode.replaceAll(MyCommentsRegex, " ");
}
ma sembra non funzionare per tutti i casi, ad esempio:
System.out.print("We can use /* comments */ inside a string of course, but it shouldn't start a comment");
Qualche consiglio o idee diverse dalla regex? Grazie in anticipo.
Penso che il tuo esatto esempio sia avvitato: il commento vicino all'interno della stringa chiuderà il commento. Tuttavia, un commento aperto all'interno di una stringa che non si trova in un commento non ne inizierà uno. – Grandpa
Sì, mio male. Stavo cercando di dare qualcosa di complicato qui e mi sono ingannato. – brovar
Apprezzerei se si potesse consolidare e inserirlo nella risposta dopo averlo provato. Sto anche cercando una soluzione simile – Ravisha