2014-07-05 21 views
8

Einige Sprachen haben Einrichtungen für Zeilenumbrüche und Leerzeichen in langen regulären Ausdrücken Einbetten sie besser lesbargo idiom zum Schreiben langer regulärer Ausdrücke, eingebettete Kommentare?

(yogi | booboo) # match something 
\s 
(the \s)?   # optional article 
bear    # bears are not Mr. Ranger 

AFAICT golang zu machen ist nicht diese Option haben, stimmt das?

Fehlt das, ist eine composed regex die einzige Option für Klarheit? Oder gibt es ein anderes Idiom? Ich finde keine Beispiele für lange Regexen im Moment.

+2

Denken Sie daran, dass golang nicht PCRE nicht verwenden, wie die meisten anderen Sprachen, lesen Sie über [RE2] (https://code.google.com/p/re2/wiki/Syntax). – OneOfOne

+0

Danke, dass du mir den richtigen Plural für Regex beigebracht hast. –

Antwort

6

Die meiste Zeit geben die Leute nur einen Kommentar mit einer Beschreibung, was die Regexp übereinstimmt. Aber Skimming durch den Code Go Quelle I this interessantes Beispiel gefunden:

// removeRE is the list of patterns to skip over at the beginning of a 
// message when looking for message text. 
var removeRE = regexp.MustCompile(`(?m-s)\A(` + 
    // Skip leading "Hello so-and-so," generated by codereview plugin. 
    `(Hello(.|\n)*?\n\n)` + 

    // Skip quoted text. 
    `|((On.*|.* writes|.* wrote):\n)` + 
    `|((>.*\n)+)` + 

    // Skip lines with no letters. 
    `|(([^A-Za-z]*\n)+)` + 

    // Skip links to comments and file info. 
    `|(http://codereview.*\n([^ ]+:[0-9]+:.*\n)?)` + 
    `|(File .*:\n)` + 

    `)`, 
) 
+1

Das ist ein schönes Beispiel, vielen Dank für das Graben. –

Verwandte Themen