多次匹配相同的正则表达式?

时间:2014-05-13 02:17:42

标签: ruby

foo = '1234567890'
foo.sub(/(.{3})(.{3})/, '\1-\2-')
 #=> "123-456-7890"

是否可以执行以下操作:

foo.gsub(/(.{3})\2/, '\1-\2-')

请注意,半伪代码\2表示match (this) pattern twice此模式为(.{3}),以便我可以获得#=> "123-456-7890"的相同结果。

这可能吗?

1 个答案:

答案 0 :(得分:1)

{2}是“匹配此模式两次”(我想你已经应该知道了,因为你使用了一个非常相似的{3}“匹配这个模式三次”修饰符)。所以,不是100%肯定你在问什么,真的。 :)

但是,对于相同模式的不同匹配,您不能拥有不同的组;因此,你的替代品将无效。

如果你真的想要重复模式的东西(你在数组中得到它们),你可以使用String#scan做类似的事情。