import Foundation
func countMatches(in text: String, pattern: String) -> Int {
let regex = try! NSRegularExpression(pattern: pattern)
let range = NSRange(text.startIndex..<text.endIndex, in: text)
return regex.matches(in: text, range: range).count
}
func countCharacters(_ text: String) -> (uppercase: Int, lowercase: Int, digits: Int, special: Int) {
let uppercase = countMatches(in: text, pattern: "[A-Z]")
let lowercase = countMatches(in: text, pattern: "[a-z]")
let digits = countMatches(in: text, pattern: "\\d")
let special = countMatches(in: text, pattern: "[^A-Za-z0-9]")
return (uppercase, lowercase, digits, special)
}
let s = "Programming&AI@2026!"
let (u, l, d, spc) = countCharacters(s)
print("Uppercase:", u)
print("Lowercase:", l)
print("Digits:", d)
print("Special characters:", spc)
/*
run:
Uppercase: 3
Lowercase: 10
Digits: 4
Special characters: 3
*/