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

时间:2013-06-14 07:15:10

标签: ruby regex

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

当我调用h [0]但是我只收到somedata1的一个实例,即使多次出现也是如此。如何过滤结果以便我可以计算匹配字符串的每个实例?

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

++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++

"sometext".to_enum(:scan, /someregex/).map { Regexp.last_match }

3 个答案:

答案 0 :(得分:0)

您可以使用count计算结果。

h是一个数组,所以你可以做

h.count

答案 1 :(得分:0)

扫描时应该计算它 或使用group_by

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

答案 2 :(得分:0)

事实证明,简单地循环/显示#<MatchData "">的每个实例都可以解决问题