• 对于简单的构建操作,使用正则表达式作为索引即可。
    [link]

    1. # 差
    2. /(first|second)/
    3. # 好
    4. /(?:first|second)/

  • 避免使用 Perl 风格的、用以代表最近的捕获组的特殊变量(比如 $1$2 等)。使用 Regexp.last_match(n) 来替代。
    [link]


  • 避免使用数字来获取分组。因为很难明白它们代表的含义。使用命名分组来替代。
    [link]

    1. /(regexp)/ =~ string
    2. ...
    3. process Regexp.last_match(1)
    4. # 好
    5. /(?<meaningful_var>regexp)/ =~ string
    6. ...
    7. process meaningful_var

  • 对于复杂的正则表达式,使用 x 修饰符。这种做法不但可以提高可读性,而且允许你加入必要的注释。注意的是,空白字符会被忽略。
    [link]

    1. regexp = /
    2. start # some text
    3. \s # white space char
    4. (group) # first group
    5. (?:alt1|alt2) # some alternation
    6. end
    7. /x