Ruby'matta()`方法抛出错误“无法转储MatchData”

时间:2013-01-16 08:16:13

标签: ruby regex ruby-1.9.3

Interactive ruby ready.

> time = /\A(?­<hours>(0\d|1[0-9­]|2[0-3]))­:(?<minutes­>([1-5]\d|0­\d))\Z/
=> /\A(?<hours>(0\d|1[0-9]|2[0-3])):(?<minutes>([1-5]\d|0\d))\Z/

> match = time.­match '11:3­0'
=> #<TypeError: can't dump MatchData>

我正在尝试运行代码但是如上所述得到错误。我对regexp做了什么错误帮助我改进它。

编辑

> time = /\A(0­\d|1[0-9­]­|2[0-3])­:­([0-5]\d)\­Z/
=> /\A(0\d|1[0-9??]|2[0-3])??:([0-5]\d)\Z/
> time.match­('11:30')
=> #<TypeError: can't dump MatchData>
> 

1 个答案:

答案 0 :(得分:2)

应该正常工作,你链接到的示例在我的机器上工作。然而,正则表达式是不必要的复杂:

time = /\A(?<hours>0\d|1[0-9]|2[0-3]):(?<minutes>[0-5]\d)\Z/

就够了。

然而,似乎在您的环境中的某个地方,额外的字节已经嵌入到字符串中,并且这些字节会混淆在线测试人员(这是正常工作的)。尝试从这个答案复制正则表达式(我删除了不可见的字符),看看它现在是否适合你。