regex - todos - ¿Cómo capturar múltiples coincidencias de expresiones regulares, desde una sola línea, en la variable mágica $ coincidencias en Powershell?
rangos expresiones regulares (2)
Digamos que tengo la cadena "bla bla F12 bla bla F32 bla bla bla" y quiero coincidir con la F12 y la F32 , ¿cómo podría capturar ambas con la variable mágica $ Powershell?
Si ejecuto el siguiente código en Powershell:
$string = "blah blah F12 blah blah F32 blah blah blah"
$string -match "F/d/d"
La variable $ coincidencias solo contiene F12
También intenté:
$string -match "(F/d/d)"
Esta vez $ match tenía dos artículos, pero ambos son F12
Me gustaría que $ coincidencias contuvieran tanto F12 como F32 para su posterior procesamiento. Parece que no puedo encontrar la manera de hacerlo.
Toda la ayuda sería muy apreciada. :)
Puede hacer esto utilizando Select-String en PowerShell 2.0 de la siguiente manera:
Select-String F/d/d -input $string -AllMatches | Foreach {$_.matches}
Hace un tiempo, pedí un operador -matchall
en MS Connect y esta sugerencia se cerró tal como se solucionó con este comentario:
"Esto se solucionó con el parámetro -allmatches para cadena de selección".
Sugiero usar esta sintaxis para que sea más fácil manejar su variedad de coincidencias:
$string = "blah blah F12 blah blah F32 blah blah blah" ;
$matches = ([regex]''F/d/d'').Matches($string);
$matches[1].Value; # get matching value for second occurance, F32