一尘不染

编写长正则表达式,嵌入式注释会成语吗?

go

一些语言具有在长的正则表达式中嵌入换行符和空格的功能,以使其更具可读性

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

AFAICT golang并 没有 这样的选择,是这样吗?

缺少这一点,为了清楚起见,组成正则表达式是唯一的选择吗?还是还有另一个成语?我现在找不到go中长regexen的任何例子。


阅读 245

收藏
2020-07-02

共1个答案

一尘不染

大多数时候,人们只是在评论中提供正则表达式匹配的内容。但是,通过浏览Go源代码,我发现了一个有趣的示例:

// 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)` +

    `)`,
)
2020-07-02