regulares - ruby regex: empareja y obtiene la(s) posición(es) de
ruby regex validator (3)
Algo así como, ver String#index
"AustinTexasDallasTexas".index /Texas/
=> 6
Ahora, podría extender la API de cadena.
class String
def indices e
start, result = -1, []
result << start while start = (self.index e, start + 1)
result
end
end
p "AustinTexasDallasTexas".indices /Texas/
=> [6, 17]
Me gustaría hacer coincidir una expresión regular y obtener la posición en la cadena del partido
Por ejemplo,
"AustinTexasDallasTexas".match_with_posn /(Texas)/
Me gustaría que match_with_posn
devuelva algo como: [6, 17]
donde 6 y 17 son las posiciones iniciales para ambas instancias de la palabra Texas.
¿Hay algo como esto?
Usando Ruby 1.8.6+, puedes hacer esto:
require ''enumerator'' #Only for 1.8.6, newer versions should not need this.
s = "AustinTexasDallasTexas"
positions = s.enum_for(:scan, /Texas/).map { Regexp.last_match.begin(0) }
Esto creará una matriz con:
=> [6, 17]
"AustinTexasDallasTexas".gsub(/Texas/).map { Regexp.last_match.begin(0) }
#=> [6, 17]