validator regulares regular one expresiones examples ruby regex

ruby - regulares - Unir todas las apariciones de una expresión regular



ruby regex validator (3)

Para encontrar todas las cadenas coincidentes, utilice el método de scan de String clase String .

str = "A 54mpl3 string w1th 7 numb3rs scatter36 ar0und" str.scan(//d+/) #=> ["54", "3", "1", "7", "3", "36", "0"]

Si prefiere que MatchData que es el tipo de objeto devuelto por, match método de las clases Regexp , use lo siguiente

str.to_enum(:scan, //d+/).map { Regexp.last_match } #=> [#<MatchData "54">, #<MatchData "3">, #<MatchData "1">, #<MatchData "7">, #<MatchData "3">, #<MatchData "36">, #<MatchData "0">]

La ventaja de tener MatchData es que puedes usar métodos como el offset

match_datas = str.to_enum(:scan, //d+/).map { Regexp.last_match } match_datas[0].offset(0) #=> [2, 4] match_datas[1].offset(0) #=> [7, 8]

Consulte estas preguntas también si desea saber más.
¿Cómo obtengo los datos de coincidencia para todas las apariciones de una expresión regular de Ruby en una cadena?
Enumerador de coincidencia de expresiones regulares de Ruby con soporte de captura con nombre
Cómo averiguar el punto de partida para cada partido en ruby

Leer sobre las variables especiales $& , $'' , $1 , $2 en ruby ​​será muy útil.

¿Hay una forma rápida de encontrar todas las coincidencias de una expresión regular en Ruby? He buscado en el objeto Regex en Ruby STL y busqué en Google sin éxito.


Si tienes una expresión regular con grupos:

str="A 54mpl3 string w1th 7 numbers scatter3r ar0und" re=/(/d+)[m-t]/

Utiliza el método de escaneo de cadenas para encontrar grupos coincidentes:

str.scan re #> [["54"], ["1"], ["3"]]

Para encontrar el patrón a juego:

str.to_enum(:scan,re).map {$&} #> ["54m", "1t", "3r"]


El uso de la scan debería hacer el truco:

string.scan(/regex/)