somestring = "ABC deFgHij kLmN pQrS XYZ abcdEf mixedCaps mixeDCaps mIxedCaps mIxeDCaps T TT t tt" at_least_2_capitals = somestring.scan(/[A-Z][A-Z]+/) print at_least_2_capitals puts "" at_most_1_capitals = somestring.scan(/(?<![A-Z])(?!(?:[A-Z]){2,})(?:[A-Z])+/) print at_most_1_capitals puts "" at_most_2_capitals = somestring.scan(/(?<![A-Z])(?!(?:[A-Z]){3,})(?:[A-Z])+/) print at_most_2_capitals puts "" words_with_at_most_1_capitals = somestring.scan(/\b(?:\w(?:(?<![A-Z])|(?!(?:[A-Z]){1,})))+\b/) print words_with_at_most_1_capitals puts ""
Standard input is empty
["ABC", "XYZ", "DC", "DC", "TT"] ["F", "H", "L", "N", "Q", "S", "E", "C", "I", "C", "I", "T"] ["F", "H", "L", "N", "Q", "S", "E", "C", "DC", "I", "C", "I", "DC", "T", "TT"] ["deFgHij", "kLmN", "pQrS", "abcdEf", "mixedCaps", "mIxedCaps", "T", "t", "tt"]