【问题标题】:Ruby Regex for repeated numbers in a stringRuby Regex 用于字符串中的重复数字
【发布时间】:2018-02-07 05:50:57
【问题描述】:

如果我有一个像 "123123123" 这样的字符串 - 这里 123 重复 3 次。
1. 那么我怎样才能在 ruby​​ 中只获得 "123" 呢?
2.所以如果字符串是"12312312" - 这里123重复2次,然后只是12,所以我仍然需要得到"123"
3. 即使字符串是99123123123,我仍然需要得到123
这在 Ruby 正则表达式中可能吗?

编辑:我想解决 Project Euler Problem 26 。所以这里123 可以是任何东西。我想要的只是提取 1 个至少 2 个重复的数字。

【问题讨论】:

  • 在任何正则表达式中都不可能,因为我认为 123 是动态的而不是静态的 123,你最好用 ruby​​ 编写一个程序来修复它......不是直接/间接的正则表达式可解决的问题
  • 重复组的最小长度是多少?
  • 对不起,我已经更新了问题 - 请检查!
  • 你最好不要用字符串操作来解决这类问题。做一些数学运算,相信我,它会更容易。
  • 这将如何帮助您解决问题?

标签: ruby-on-rails ruby regex computer-science


【解决方案1】:

此正则表达式将检测所有重复组。

(\d+)(?=.*\1)

Demo

也适用于 ruby​​。

result = '9912341234123'.scan(/(\d+)(?=.*\1)/)
#gets group with largest length
longestRepeatingGroup = result.max_by{|arr| arr[0].length}

puts longestRepeatingGroup
puts longestRepeatingGroup[0].length

【讨论】:

    【解决方案2】:

    试试这个

    99123123123.scan(/123/).count
    12312312.scan(/123/).count
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 2019-10-10
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      相关资源
      最近更新 更多