matches(texto, patrón) — validación
Devuelve true solo si el texto completo coincide con el patrón. No necesitas anclar con ^ ni $: ya está pensada para validar.
matches("11-4567-8901", "[0-9]{2}-[0-9]{4}-[0-9]{4}") -- true
matches("tel: 11-4567-8901", "[0-9]{2}-[0-9]{4}-[0-9]{4}") -- false (hay texto de más)
Mini-vocabulario de patrones
[0-9] un dígito · [a-z] una letra · [^@ ] cualquier cosa menos arroba o espacio.
+ una o más veces · * cero o más · {4} exactamente 4 · {2,3} entre 2 y 3.
\. un punto literal (el punto solo significa «cualquier carácter»).
Un email razonable: "[^@ ]+@[^@ ]+\.[^@ ]+" — algo, arroba, algo, punto, algo.
capture(texto, patrón) — extraer partes
Busca la primera coincidencia (no hace falta que sea todo el texto). Con grupos (...) devuelve la lista de grupos; sin coincidencia devuelve nothing — la guardia que ya conoces.
capture("ana@vida.com", "([^@]+)@(.+)") -- ["ana", "vida.com"]
find_all(texto, patrón) — todas las apariciones
find_all("turnos 09:00 y 10:30", "[0-9]{2}:[0-9]{2}") -- ["09:00", "10:30"]
Regla práctica: matches para decir sí/no a un formato, capture para sacar pedazos, find_all para cosechar todas las apariciones.