2014-07-05 12 views
8

Niektóre języki mają udogodnienia dla montowania nowej linii i spacje w długich wyrażeń regularnych, aby uczynić je bardziej czytelneidiom id do pisania długich wyrażeń regularnych, osadzonych komentarzy?

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

AFAICT golang ma nie ma takiej możliwości, prawda?

Brak tej opcji jest jedyną opcją dla zachowania przejrzystości? Czy istnieje inny idiom? W tej chwili nie znajduję żadnych przykładów długich wyrażeń regularnych.

+2

Należy pamiętać, że golang nie używa PCRE podobnie jak większość innych języków, czytać o [RE2] (https://code.google.com/p/re2/wiki/Syntax). – OneOfOne

+0

Dzięki za nauczenie mnie odpowiedniej liczby mnogiej dla Regex. –

Odpowiedz

6

W większości przypadków wystarczy, że ktoś poda komentarz z opisem dopasowania do wyrażenia regularnego. Ale przeglądając kod źródłowy Go znalazłem this interesujący przykład:

// 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

To dobry przykład, dzięki za to. –

Powiązane problemy