当我使用%r时,为什么rubocop要求我把//放在正则表达式附近?

时间:2016-06-21 22:15:39

标签: ruby rubocop

我有以下正则表达式

  regexp = %r{
     ((returned|undelivered)\smail|mail\sdelivery(\sfailed)?)
  }x

但是当我在上面运行rubocop时,它抱怨我需要"在正则表达式周围使用//。"

我怎样才能绕过它?

4 个答案:

答案 0 :(得分:3)

您可以通过将.rubocop.yml文件添加到项目文件夹的根目录并设置相应的配置来禁用(并启用)任何rubocop警察。要了解您可以执行的操作,请查看rubocop包中的全局default.yml。它得到了充分的评论。

对于此特定问题,请创建.rubocop.yml和...

完全禁用警察:

Style/RegexpLiteral: Enabled: false

始终使用%r

Style/RegexpLiteral: EnforcedStyle: percent_r

答案 1 :(得分:1)

我没有运行rubocop所以不确定这会解决你的问题。使用%r:

时,可以使用//而不是{}来围绕正则表达式
    #x

答案 2 :(得分:1)

您可以将多行正则表达式与/.../x一起使用:

regexp = /
  ((returned|undelivered)
  \s
  mail|mail
  \s
  delivery
  (\sfailed)?)
/x

Rubocop gem doc

中查看详情

答案 3 :(得分:-1)

  

当我在上面运行rubocop时,它抱怨我需要“使用//围绕正则表达式。”

     

我怎样才能绕过它?

我认为这个消息非常明确:为了解决这个问题,你可以在正则表达式周围使用//

regexp = /((returned|undelivered)\smail|mail\sdelivery(\sfailed)?)/x