是否可以在 Ruby 上使用正则表达式捕获字符串中所有相同的数字?我不熟悉正则表达式。
我的意思是:正则表达式"1112234444"
会产生["111", "22", "3", "4444"]
我知道,我可以使用(\d)(\1*)
,但它在每场比赛中只给我 2 组。["1", "11"], ["2", "2"], ["3", -], ["4", "444"]
如何在每场比赛中获得 1 组?谢谢。
在这里,试一试:
((\d)\2*)
你可以使用这个正则表达式
((\d)\2*)
第 1 组捕获您所需的值
我的第一个快速回答因没有解释代码而受到批评。所以这是另一个,在所有方面都更好;-)
我们利用这样一个事实,即我们想要运行的元素是数字并且它们很容易手动枚举。所以我们构造了一个可读的正则表达式,意思是“一连串零,或一连串,……或一连串九”。我们使用正确的方法来完成这项工作,String#scan:
irb> "1112234444".scan(/0+|1+|2+|3+|4+|5+|6+|7+|8+|9+/)
=> ["111", "22", "3", "4444"]
作为记录,这是我的原始答案:
irb> s = "1112234444"
=> "1112234444"
irb> rx = /(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)/
=> /(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)/
irb> s.split(rx).reject(&:empty?)
=> ["111", "22", "3", "4444"]