Regex para buscar texto entre la segunda y la tercera barra inclinada

Me gustaría capturar el texto que ocurre después de la segunda barra y antes de la tercera barra en una cadena. Ejemplo:

/ ipaddress / databasename /

Necesito capturar solo el nombre de la base de datos. El nombre de la base de datos puede tener letras, números y guiones bajos. Gracias.

Cómo accedes depende de tu idioma, pero básicamente solo querrás un grupo de captura para lo que se encuentre entre tu segundo y tercer “/”. Suponiendo que su cadena está siempre en la misma forma que su ejemplo, esto será:

/.*/(.*)/ 

Si pueden existir barras diagonales múltiples, pero una barra diagonal nunca puede existir en el nombre de la base de datos, usted querrá:

 /.*/(.*?)/ 
 /.*?/(.*?)/ 

En el caso de que sus líneas siempre tengan / al final de la línea:

 ([^/]*)/$ 

Método alternativo de split :

 split("/")[2] 

La expresión regular sería:

 /[^/]*/([^/]*)/ 

entonces, en Perl, la statement de captura de expresiones regulares sería algo así como:

 ($database) = $text =~ m!/[^/]*/([^/]*)/!; 

Normalmente, el carácter / se usa para delimitar expresiones regulares, pero dado que se usan como parte de la coincidencia, se puede usar otro carácter. Alternativamente, el / carácter puede ser escapado:

 ($database) = $text =~ /\/[^\/]*\/([^\/]*)\//; 

Sé que específicamente pediste expresiones regulares, pero realmente no necesitas expresiones regulares para esto. Simplemente necesita dividir la cadena por delimitadores (en este caso una barra invertida), luego elija la parte que necesita (en este caso, el tercer campo, el primer campo está vacío).

  • ejemplo de cut :

     cut -d '/' -f 3 < << "$string" 
  • ejemplo awk :

     awk -F '/' {print $3} < << "$string" 
  • expresión perl , usando la función split :

     (split '/', $string)[2] 

etc.

Puedes acortar aún más el patrón yendo por este camino:

 [^/]+/(\w+) 

Aquí \w incluye caracteres como AZ, az, 0-9 and _

Le sugiero que otorgue prioridad a la función SPLIT , ya que he experimentado un buen rendimiento de ellos sobre las funciones RegEx siempre que sea posible utilizarlas.

puede usar la función de explode con PHP o split con otros idiomas para tal operación.

de todos modos, aquí está el patrón de expresiones regulares:

 /[\/]*[^\/]+[\/]([^\/]+)/