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