ruby - regulares - Iterar a través de cada "partido"(expresión regular de rubí)
ruby regex validator (2)
String#scan
se puede usar para encontrar todas las coincidencias de una expresión regular determinada:
"(5) (6) (7)".scan(//(/d+/)/) { |match| puts "Found: #{match}" }
# Prints:
Found: (5)
Found: (6)
Found: (7)
Puede usar la vista positiva detrás ( ?<=
) Y mirar hacia adelante ( ?=
) Para excluir el paréntesis de sus resultados:
"(5) (6) (7)".scan(/(?<=[(])/d+(?=/))/) { |match| puts "Found: #{match}" }
# Prints:
Found: 5
Found: 6
Found: 7
Si no pasa un bloque para scan
, devuelve una matriz con todas las coincidencias:
"(5) (6) (7)".scan(/(?<=[(])/d+(?=/))/)
=> ["5", "6", "7"]
Bien, puedo encontrar una coincidencia de Regex en una cadena y hacer algunas capturas. Ahora, ¿qué pasa si mi cadena tiene muchas coincidencias? Digamos que mi código encuentra el número entre paréntesis en una cadena. El código encontrará el número en una cadena como
(5)
Pero y si la cuerda es
(5) (6) (7)
Necesito una manera de recorrer estos tres elementos. He visto tutoriales, pero parece que solo hablan de coincidencias únicas ...
Si lo comprendo correctamente, podrías usar el método de String#scan
. Vea la documentación here .