2017-02-08 3 views
1

Ich arbeite an einem Code in Salesforce APEX, um alle Kommentarblöcke in einem Code zu identifizieren.Regex zur Identifizierung aller Kommentarblöcke in einem Code

In einer größeren Perspektive möchte ich Codezeilen überprüfen, um zu überprüfen, ob Best Practices Fehler vorhanden sind.

Dafür benötige ich die Linienberechnung, um korrekt zu sein und will daher Kommentarblöcke in einzelne Zeilen zusammenfassen.

Alle Muster, die ich ausprobiert habe, gehen jedoch in Endlosschleifen.

Ich suche regex Patter, die 3 Treffer für unten Art von Code zurückkehren würde: -

/* hey 

*ru 

*there 

*/ 

Some COde 

/* hey 

*ru 

*there 

*/ 

Some Code 
/* hey 

*ru 

*there 

*/ 

Some Code 

Die Optionen, die ich bereits versucht haben, wie unten sind: -

\\*([^*]|[\r\n]|(\\*+([^*/]|[\r\n])))*\\*+ 
(/\\*([^*]|[\r\n]|(\\*+([^*/]|[\r\n])))*\\*+/) 
/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/ 

Aber keiner davon funktioniert.

Kann jemand mir mit besserer Schnur helfen?

+1

Probieren Sie '/ \\ * [^ *] * \\ * + ([^/*] [^ *] * \\ * +) * /'. Ich bin mir nicht sicher, ob Sie nicht-einfangende Gruppen verwenden können, wenn ja, '/ \\ * [^ *] * \\ * + (?: [^/*] [^ *] * \\ * +) * /' sollte auch funktionieren. –

+0

Welchen Code verwenden Sie? –

+0

Sehen Sie sich http://perldoc.perl.org/perlfaq6.html#How-do-I-use-a-regular-expression-to-strip-C-style-comments-from-a-file%3F an – Toto

Antwort

0

Wenn Sie nur die Kommentarblöcke zählen, können Sie folgende Regex auf den gesamten Code verwenden (nicht für Zeile):

/(/\*.*?\*/)/sg 

Sie haben die Einleiner und globale Verwendung des Änderungs alle Kommentare haben zurückgegeben.

0

Wenn Sie sich die Apex-Dokumentation ansehen, suchen Sie nach einem Java-kompatiblen Regex.

Sie vertrauen können auf

"/\\*[^*]*\\*+([^/*][^*]*\\*+)*/" 

Siehe regex demo

Einzelheiten:

  • /\* - wörtliche /*
  • susbtring
  • [^*]*\*+ - Spiel 0+ Zeichen andere als * und dann einem oder mehr literal Sternchen
  • (?:[^/*][^*]*\*+)* - null oder mehr Sequenzen von:
    • [^/*][^*]*\*+ - jede char außer / oder * (siehe [^/*]) gefolgt von null oder mehr anderen Zeichen als Stern ([^*]*) und anschließend mit einem oder mehr Sternchen (\*+)
  • / - Schließen / Symbol.
Verwandte Themen