我用的是ruby 2.4。我想在字符串数组中找到与正则表达式匹配的连续标记。如果我的regex是
/\p{L}/
我的阵型是
["2917", "m", "neatty", "fff", "46", "u", "28", "56"]
我希望结果是
["m", "neatty", "fff"]
但是,我的尝试失败了(请注意,“neatty”标记被重复了)。
2.4.0 :020 > arr = ["2917", "m", "neatty", "fff", "46", "u", "28", "56"]
=> ["2917", "m", "neatty", "fff", "46", "u", "28", "56"]
2.4.0 :021 > arr.each_cons(2).select{|pair| pair.all?{|elem| elem =~ /\p{L}/ }}.flatten
=> ["m", "neatty", "neatty", "fff"]
如何在数组中找到与同样不重复的模式匹配的连续标记?
最佳答案
如果r
是您的正则表达式,则使用chunk_while
arr.chunk_while { |a,b| a[r] && b[r] }.select { |arr| arr.size > 1 }
#=> [["m", "neatty", "fff"]]