正则表达式 (Regular Expressions)

  • 避免使用 $1-9 因为可能难以辨认出是哪一个,取个名。
    [link]

    1. # 错误
    2. /(regexp)/ =~ string
    3. ...
    4. process $1
    5. # 正确
    6. /(?<meaningful_var>regexp)/ =~ string
    7. ...
    8. process meaningful_var
  • 小心使用 ^$ 因为它们匹配的是
    行头/行末,而不是某个字符串的结尾. 如果你想匹配整个字符串, 用: \A\z.[link]

    1. string = "some injection\nusername"
    2. string[/^username$/] # matches
    3. string[/\Ausername\z/] # don't match
  • 使用 x 修饰符在复杂的正则表达式上。
    这使得它更可读, 并且你可以加有用的注释。只是要注意空格会被忽略。[link]

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