Ruby 1.8.7中的正则表达式错误但不是2.0?

时间:2014-02-07 18:58:41

标签: ruby regex ruby-1.8.7

在Ruby 1.8.7中,以下正则表达式警告:嵌套重复运算符+和*被替换为'*'。

^(\w+\.\w+)\|(\w+\.\w+)\n+*$

它在Ruby 2.0中有效吗?

http://rubular.com/r/nRUSP5LNZA

1 个答案:

答案 0 :(得分:3)

嵌套运算符可以正常工作,但会被警告,因为它没用。 \n+*表示:

  • 零次或多次重复
  • 的一次或多次重复
  • \n

相当于更简单的表达式\n*,意思是:

  • 零次或多次重复
  • \n

没有理由使用\n+*。在Ruby 1.9和Ruby 2.0中替换了Ruby正则表达式引擎,如果存在任何差异,那么新引擎就不会像旧版引擎那样检查警告。