Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 多次匹配同一个正则表达式?_Ruby - Fatal编程技术网

Ruby 多次匹配同一个正则表达式?

Ruby 多次匹配同一个正则表达式?,ruby,Ruby,是否可以执行以下操作: foo = '1234567890' foo.sub(/(.{3})(.{3})/, '\1-\2-') #=> "123-456-7890" 注意,半伪代码\2表示两次匹配(这个)模式这个模式是(.{3}),这样我就可以得到与#=>“123-456-7890”相同的结果 这可能吗 {2}是“两次匹配此模式”(我想您应该已经知道了,因为您使用的是非常类似的{3}“三次匹配此模式”修饰符)。所以,不是100%确定你在问什么,真的 但是,对于同一模式的不同匹配,不能

是否可以执行以下操作:

foo = '1234567890'
foo.sub(/(.{3})(.{3})/, '\1-\2-')
 #=> "123-456-7890"
注意,半伪代码
\2
表示两次
匹配(这个)模式
这个模式是
(.{3})
,这样我就可以得到与
#=>“123-456-7890”
相同的结果

这可能吗

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

但是,对于同一模式的不同匹配,不能有不同的组;因此,你的替代品不起作用

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

No String#scan只会增加不必要的复杂性。只是想简化正则表达式。我觉得我在其他语言中也看到过。。
foo.gsub(/(.{3})\2/, '\1-\2-')