2014-02-07 26 views
0

在Ruby 1.8.7中,以下正則表達式警告:嵌套重複運算符+和*被替換爲'*'。Ruby 1.8.7中的正則表達式錯誤,但不是2.0?

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

它確實在Ruby 2.0中工作?

http://rubular.com/r/nRUSP5LNZA

+0

'x + *'不是我熟悉的構造;這是一個Ruby的東西?另外,爲什麼不使用'^(\ w + \。\ w +)\ |(\ w + \。。w +)$'? –

+0

其實@pswg我確定我的正則表達式也是錯誤的,我真正想要的是必須有一個或多個行上的管道分隔兩個文件,這似乎是在http://rubular.com/r/nRUSP5LNZA – kreek

+0

找出/ ^((\ w + \。\ w +)\ |(\ w + \。\ w +)(\ r \ n)*)* $ /' – kreek

回答

3

嵌套操作者的作品,但被警告,因爲它是無用的。 \n+*手段:

  • 零或
  • 一個或
  • \n

更repeatition更repeatition這相當於一個更簡單的表達式\n*,這意味着:

  • 零次或多次重複
  • \n

沒有理由使用\n+*。在Ruby 1.9和Ruby 2.0中,Ruby正則表達式引擎被替換了,如果有任何區別,那麼更新的引擎不會像老版本那樣檢查警告。

+0

是的,您應該使用'+'或'*'但不是兩者。 – tadman