2011-04-26 18 views

Respuesta

22

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.

0

debe estar cerca para preg_match

"String"[/reg[exp]/] 
3

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.

Cuestiones relacionadas