代码之家  ›  专栏  ›  技术社区  ›  Chowlett

在多行上拆分ruby regex

  •  55
  • Chowlett  · 技术社区  · 14 年前

    这可能不是你所期待的问题!我不想要一个在换行符上匹配的regex;相反,我想编写一个长的regex,为了可读性,我想拆分为多行代码。

    类似:

    "bar" =~ /(foo|
               bar)/  # Doesn't work!
    # => nil. Would like => 0
    

    可以这样做吗?

    3 回复  |  直到 5 年前
        1
  •  40
  •   Ben Parizek    9 年前

    你需要使用 /x 修饰符,启用 free-spacing mode .

        2
  •  101
  •   grosser    5 年前

    将%r与x选项一起使用是执行此操作的首选方法。

    请参阅Github Ruby样式指南中的这个示例

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

    https://github.com/styleguide/ruby

        3
  •  3
  •   Montells    11 年前

    你可以使用:

    "bar" =~ /(?x)foo|
             bar/