ruby - 计算两个字母一起出现的次数

标签 ruby regex

我正在尝试编写一个 Ruby 程序来计算两个字母同时出现的次数。这是我正在阅读的文件中写的内容:

hola
chau

这就是我想要得到的:

ho;ol;la;ch;ha;au;
1;1;1;1;1;1;

我无法让它正常工作。到目前为止,这是我的代码:

file = File.read(gets.chomp)
todo = file.scan(/[a-z][a-z]/).each_with_object(Hash.new(0)) { 
    |a, b| b[a] += 1 
}

keys  = ''
values = ''

todo.each_key {
    |key| keys += key + ';' 
}
todo.each_value {
    |value| values += value.to_s + ';'
}

puts keys
puts values

这是我得到的结果:

ho;la;ch;au;
1;1;1;1;

为什么我没有得到字符的所有组合?我应该向我的正则表达式添加什么,以便它计算每个字符组合?

最佳答案

因为字符是重叠的,所以需要使用lookahead来捕获重叠的字符。

(?=([a-z][a-z]))

DEMO

关于ruby - 计算两个字母一起出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25608773/

相关文章:

ruby-on-rails - 如何从我的 Rack 应用程序中删除 "Server"HTTP 响应 header

ruby - 在 Ruby 中,如何确定字符串是否不在数组中?

ruby - 为什么我不能将 block 传递给 Ruby 中的 proc?

mysql - 改变Rails的belongs_to, has_many默认的Select (Where)语句

ruby-on-rails - 为什么这个在数组中包含值的测试失败了?

regex - float 的正则表达式

python - 替换所有列 pandas df 中的多个字符

regex - 如何将文件 *.R 和 *Rd 与查找实用程序匹配?

python - 在Python中,如何分割字符串并保留分隔符?

regex - Mailgun 可以使用正则表达式转发邮件吗?