Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 从MatchData获取匹配字符串的每个实例_Ruby_Regex - Fatal编程技术网

Ruby 从MatchData获取匹配字符串的每个实例

Ruby 从MatchData获取匹配字符串的每个实例,ruby,regex,Ruby,Regex,我正在使用一个带有正则表达式的扫描函数,该正则表达式返回以下对象。扫描结果分配给h 然而,当我调用h[0]时,我只收到somedata1的一个实例,即使发生了多次。如何过滤结果,以便计算匹配字符串的每个实例 #<MatchData "somedata1">, #<MatchData "somedata1">, #<MatchData "somedata2"> 您可以使用count对结果进行计数 h是一个数组,因此您可以 h.count 你扫描的时候应该数一

我正在使用一个带有正则表达式的扫描函数,该正则表达式返回以下对象。扫描结果分配给h

然而,当我调用h[0]时,我只收到somedata1的一个实例,即使发生了多次。如何过滤结果,以便计算匹配字符串的每个实例

#<MatchData "somedata1">, #<MatchData "somedata1">, #<MatchData "somedata2">

您可以使用
count
对结果进行计数

h
是一个数组,因此您可以

h.count

你扫描的时候应该数一数 或按组使用

 r = a.group_by{|s| s.data}
 r.each{|k,v| p k + "=" + v.count.to_s}

事实证明,简单地循环/显示
的每个实例就可以实现这个技巧

String#scan
返回一个字符串数组,为什么要有一个
MatchData
实例数组?我添加了上面使用的代码。我希望能够保存与正则表达式匹配的每个实例,而不仅仅是第一个实例。不,计数必须在获得匹配字符串之后进行。我仍然无法捕获所有匹配的实例。
 r = a.group_by{|s| s.data}
 r.each{|k,v| p k + "=" + v.count.to_s}