Hallo zusammen,
ich bin im Moment auf der Suche nach einem regulären Ausdruck, der alle Javadoc-Kommentare finden soll. Aktuell habe ich folgenden String (bitte beachten: es ist bereits ein Java-String, Backslashes sind also doppelt!)
Nun, das Problem ist folgendes: der Ausdruck "[\\w|\\W|\\s|\\S]" passt auf zu vieles, nämlich auch die beendende Sequenz "\\*/". Wenn ich also folgenden String mit der Regex überprüfe:
... dann findet Java hier den größtmöglichen Bereich zwischen "/**" und "*/", und das wäre alles bis auf die Methode "methodB()". Es sollen aber zwei separate Treffer (einen für jeden Javadoc-Kommentar) gefunden werden.
Ich bräuchte also anstelle des von mir verwendeten "[\\w|\\W|\\s|\\S]" einen Ausdruck für "alles außer die Sequenz */".
Ich weiß wie man das mit Mengen anstellt (z.B. [^a-z]), aber für Sequenzen fällt mir hier leider keine Lösung ein....
Kann mir jemand weiterhelfen?
Gruß,
Alan
EDIT: Ich habe eine Lösung gefunden. Die arbeitet zwar nicht mit Negation, erfüllt den Zweck aber dennoch:
Indem man hinter "([\\w|\\W|\\s|\\S])*" ein "?" schreibt, findet der *-Quantifier nicht mehr den größt- sondern den kleinstmöglichen Treffer. Muss man auch wissen - man lernt nie aus
ich bin im Moment auf der Suche nach einem regulären Ausdruck, der alle Javadoc-Kommentare finden soll. Aktuell habe ich folgenden String (bitte beachten: es ist bereits ein Java-String, Backslashes sind also doppelt!)
Java:
String javadocRegex = "/\\*(\\*)?([\\w|\\W|\\s|\\S])*\\*/";
Nun, das Problem ist folgendes: der Ausdruck "[\\w|\\W|\\s|\\S]" passt auf zu vieles, nämlich auch die beendende Sequenz "\\*/". Wenn ich also folgenden String mit der Regex überprüfe:
Java:
/** ein Javadoc-Kommentar
*/
public void methodA(){
}
/** ein anderer Javadoc-Kommentar
*/
public void methodB(){
}
... dann findet Java hier den größtmöglichen Bereich zwischen "/**" und "*/", und das wäre alles bis auf die Methode "methodB()". Es sollen aber zwei separate Treffer (einen für jeden Javadoc-Kommentar) gefunden werden.
Ich bräuchte also anstelle des von mir verwendeten "[\\w|\\W|\\s|\\S]" einen Ausdruck für "alles außer die Sequenz */".
Ich weiß wie man das mit Mengen anstellt (z.B. [^a-z]), aber für Sequenzen fällt mir hier leider keine Lösung ein....
Kann mir jemand weiterhelfen?
Gruß,
Alan
EDIT: Ich habe eine Lösung gefunden. Die arbeitet zwar nicht mit Negation, erfüllt den Zweck aber dennoch:
Indem man hinter "([\\w|\\W|\\s|\\S])*" ein "?" schreibt, findet der *-Quantifier nicht mehr den größt- sondern den kleinstmöglichen Treffer. Muss man auch wissen - man lernt nie aus
Zuletzt bearbeitet: