Estoy haciendo la transición de php a ruby y estoy tratando de calcular el cognado de los comandos de php preg_match_all y preg_replace en ruby.preg_match_all y preg_replace en Ruby
¡Muchas gracias!
Estoy haciendo la transición de php a ruby y estoy tratando de calcular el cognado de los comandos de php preg_match_all y preg_replace en ruby.preg_match_all y preg_replace en Ruby
¡Muchas gracias!
El equivalente en Ruby para preg_match_all
es String#scan
, así:
En PHP:
$result = preg_match_all('/some(regex)here/i',
$str, $matches);
y en Ruby:
result = str.scan(/some(regex)here/i)
result
ahora contiene una matriz de coincidencias.
y el equivalente en Ruby para preg_replace
es String#gsub
, así:
En PHP:
$result = preg_replace("some(regex)here/", "replace_str", $str);
y en Ruby:
result = str.gsub(/some(regex)here/, 'replace_str')
result
ahora contiene la nueva cadena con el texto de reemplazo.
debe estar cerca para preg_match
"String"[/reg[exp]/]
Para preg_replace que usaría string.gsub(regexp, replacement_string)
"I love stackoverflow, the error".gsub(/error/, 'website')
# => I love stack overflow, the website
La cadena también puede ser una variable, pero es probable que ya sabe. Si usas gsub! la cadena original será modificada. Más información en http://ruby-doc.org/core/classes/String.html#M001186
Para preg_match_all que usaría string.match(regexp)
Esto devuelve un objeto MatchData (http://ruby-doc.org/core/classes/MatchData.html).
"I love Pikatch. I love Charizard.".match(/I love (.*)\./)
# => MatchData
O usted podría utilizar string.scan(regexp)
, que devuelve una matriz (que es lo que está buscando, creo).
"I love Pikatch. I love Charizard.".scan(/I love (.*)\./)
# => Array
partido: http://ruby-doc.org/core/classes/String.html#M001136
Scan: http://ruby-doc.org/core/classes/String.html#M001181
EDIT: La respuesta de Mike se ve mucho más limpio que el mío ... probablemente debería aprobar la suya.