2 Stimmen

Regulärer Ausdruck, um Zeilen mit Kommentaren zu umgehen

Ich habe den regulären Ausdruck //.*|(\"(?:\\\\[^\"]|\\\\\"|.)*?\")|(?s)/\\*.*?\\*/ um die Kommentarzeilen auszublenden und es funktioniert gut, aber es bleibt über der Zeile hängen if (broper.equals("//BR") && brlnum.equals("0")) und behandelte sie als Kommentarzeile und ließ sie aus.

Welche Korrektur ist erforderlich?

0voto

Tim Pietzcker Punkte 311448

Dies ist etwas riskant und würde fehlschlagen, wenn die Kommentare selbst eine ungerade Anzahl von Anführungszeichen enthalten könnten. Aber wenn das kein Problem ist, können Sie nach // s, die von einer geraden Anzahl von Anführungszeichen gefolgt werden, wodurch sichergestellt wird, dass Sie sich in diesem Moment nicht innerhalb einer Zeichenkette befinden:

//(?:[^"\r\n]*"[^"\r\n]*")*[^"\r\n]*$|/\*.*?\*/

Die zweite Alternative entspricht der normalen, nicht verschachtelten /*...*/ Kommentare.

In Java:

Pattern regex = Pattern.compile("//(?:[^\"\r\n]*\"[^\"\r\n]*\")*[^\"\r\n]*$|/\\*.*?\\*/", Pattern.DOTALL | Pattern.MULTILINE);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X