2011-10-06 54 views
0

我试图拆分此字符串:怪异的结果与string.split()和正则表达式

values = "43/320x240/99/0/0,34/320x240/9/0/115,18/320x240/9/0/115,5/320x240/7/0/0" 

并获得唯一的每一个“组”的第一个数字。而不是分裂,和/我试图做只有一个正则表达式。但是,当我试试这个:

values.split(/\/(\d|x|\/)+,?/g) 

我得到这个:

["43", "0", "34", "5", "18", "5", "5", "0"] 

相反的:

​​

为什么会出现,我想每个号码之间的无效号码? Rails似乎在逗号前后都得到了所有数字。我尝试过使用其他RegExp:(/ [\ d | x] +){4},?并得到了类似的结果。

有什么不对的地方我看不到?你知道更好的解决方案吗?

回答

5

我相信分割也会返回捕获组。尝试使用非捕获括号,或更好的字符类别:

values.split(/\/[\dx\/]+,?/g) 
+0

是的,确切地说。根据http://ruby-doc.org/core-1.9.3/String.html#method-i-split,“如果_pattern_包含组,则相应的匹配也将返回到数组中。” – ruakh

+0

我已阅读关于群组的文档,但在这种情况下我没有意识到这是问题。它现在工作完美,谢谢! :d –