Зачем создавать собственные регулярные выражения, когда Ruby может обработать для вас синтаксический анализ?
>> require 'date'
=> true
>> str = "Event (No 3) 0007141706 at 2010/04/27 11:48 ( Pacific )"
>> dt = DateTime.parse(str)
=> #<DateTime: 2010-04-27T11:48:00-08:00 (98212573/40,-1/3,2299161)>
Это также гарантирует, что дата действительна, а не только в распознаваемом формате:
>> str = "Event (No 3) 0007141706 at 2010/13/32 25:61 ( Pacific )"
>> dt = DateTime.parse(str)
ArgumentError: invalid date