正则表达式 (Regular Expressions)

优质
小牛编辑
140浏览
2023-12-01
  • 避免使用 $1-9 因为可能难以辨认出是哪一个,取个名。

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

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

    regexp = %r{
      start         # some text
      \s            # white space char
      (group)       # first group
      (?:alt1|alt2) # some alternation
      end
    }x