Ejemplos de expresiones regulares
- Dar formato a expresiones regulares
- Ejemplos
- Ejemplo 1 que muestra los nombres de las zonas
- Ejemplo 2
- Ejemplo 3
- Ejemplo 4 que muestra un patrón de nomenclatura más complicado
- Ejemplo 5 que muestra los nombres de zona sin un patrón
- Ejemplo 6 que muestra los nombres de los equipos con un patrón
- Ejemplo 7
- Ejemplo 8
- Ejemplo 9
- Ejemplo 10
- Ejemplo 11
- Ejemplo 12
- Ejemplo 13
- Ejemplo 14
- Ejemplo 15
Si ha seleccionado el enfoque de expresión regular como estrategia de nomenclatura de origen, puede utilizar los ejemplos de expresiones regulares como guías para sus propias expresiones utilizadas en los métodos de resolución automática de Data Infrastructure Insights.
Dar formato a expresiones regulares
Al crear expresiones regulares para la resolución automática de Data Infrastructure Insights, puede configurar el formato de salida introduciendo valores en un campo denominado FORMAT.
El valor predeterminado es \1, lo que significa que un nombre de zona que coincida con la expresión regular se reemplaza por el contenido de la primera variable creada por la expresión regular. En una expresión regular, los valores de las variables se crean mediante sentencias entre paréntesis. Si se producen varias sentencias paréntesis, se hace referencia numéricamente a las variables, de izquierda a derecha. Las variables se pueden utilizar en formato de salida en cualquier orden. El texto constante también se puede insertar en la salida, agregándolo al campo DE FORMATO.
Por ejemplo, es posible que tenga los siguientes nombres de zona para esta convención de nomenclatura de zona:
[Zone number]_[data center]_[hostname]_[device type]_[interface number] * S123_Miami_hostname1_filer_FC1 * S14_Tampa_hostname2_switch_FC4 * S3991_Boston_hostname3_windows2K_FC0 * S44_Raleigh_hostname4_solaris_FC1
Y la salida podría tener el siguiente formato:
[hostname]-[data center]-[device type] Para ello, debe capturar los campos de nombre de host, centro de datos y tipo de dispositivo en variables y utilizarlos en el resultado. La siguiente expresión regular haría esto:
.*?_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_.* Como hay tres conjuntos de paréntesis, las variables \1, \2 y \3 se rellenarían.
A continuación, puede utilizar el siguiente formato para recibir la salida en el formato que prefiera:
\2-\1-\3 Su salida sería la siguiente:
hostname1-Miami-filer hostname2-Tampa-switch hostname3-Boston-windows2K hostname4-Raleigh-solaris
Los guiones entre las variables proporcionan un ejemplo de texto constante que se inserta en el resultado con formato.
Ejemplos
Ejemplo 1 que muestra los nombres de las zonas
En este ejemplo, se utiliza la expresión regular para extraer un nombre de host del nombre de zona. Puede crear una expresión regular si tiene algo similar a los siguientes nombres de zona:
-
S0032_myComputer1Name-HBA0
-
S0434_myComputer1Name-HBA1
-
S0432_myComputer1Name-HBA3
La expresión regular que podría utilizar para capturar el nombre de host sería:
S[0-9]+_([a-zA-Z0-9]*)[_-]HBA[0-9] El resultado es una coincidencia de todas las zonas que comienzan con S seguidas de cualquier combinación de dígitos , seguida de un guión bajo, el nombre de host alfanumérico (myComputer1Name), un guión o guión bajo, el HBA de letras mayúsculas y un solo dígito (0-9). El nombre de host solo se almacena en la variable *\1*.
La expresión regular se puede dividir en sus componentes:
-
"S" representa el nombre de la zona y comienza la expresión. Esto sólo coincide con una "S" al principio del nombre de la zona.
-
Los caracteres [0-9] entre paréntesis indican que lo que sigue a "S" debe ser un dígito entre 0 y 9, inclusive.
-
El signo + indica que la aparición de la información en los corchetes anteriores debe existir 1 o más veces.
-
El _ (subrayado) significa que los dígitos después de S deben ser seguidos inmediatamente sólo por un carácter de subrayado en el nombre de la zona. En este ejemplo, la convención de nomenclatura de zona utiliza el guión bajo para separar el nombre de zona del nombre de host.
-
Después del subrayado requerido, los paréntesis indican que el patrón contenido en se almacenará en la variable \1.
-
Los caracteres entre corchetes [a-za-Z0-9] indican que los caracteres que se comparan son todas letras (independientemente del caso) y números.
-
El * (asterisco) que sigue a los corchetes indica que los caracteres entre corchetes ocurren 0 o más veces.
-
Los caracteres entre corchetes [_-] (subrayado y guión) indican que el patrón alfanumérico debe ir seguido de un guión bajo o un guión.
-
Las letras HBA en la expresión regular indican que esta secuencia exacta de caracteres debe producirse en el nombre de la zona.
-
El conjunto final de caracteres entre corchetes [0-9] coincide con un solo dígito del 0 al 9, inclusive.
Ejemplo 2
En este ejemplo, salte hasta el primer subrayado "", luego iguala E y todo después hasta el segundo "", y luego salte todo después de eso.
ZONA: Z_E2FDE S01_E1NETAPP
NOMBRE DE HOST: E2FHDBS01
RegExp: .?(E.?).*?
Ejemplo 3
Los paréntesis "( )" alrededor de la última sección de la expresión regular (abajo) identifican qué parte es el nombre de host. Si usted quisiera que VSAN3 fuera el nombre de host, sería: _([a-za-Z0-9]).*
ZONA: A_VSAN3_SR48KENT_A_CX2578_SPA0
NOMBRE DE HOST: SR48KENT
RegExp: _[a-za-Z0-9]+_([a-za-Z0-9]).*
Ejemplo 4 que muestra un patrón de nomenclatura más complicado
Puede crear una expresión regular si tiene algo similar a los siguientes nombres de zona:
-
MyComputerName123-HBA1_Symm1_FA3
-
MyComputerName123-HBA2_Symm1_FA5
-
MyComputerName123-HBA3_Symm1_FA7
La expresión regular que podría utilizar para capturar estos elementos sería:
([a-zA-Z0-9]*)_.* La variable \1 sólo contendrá _myComputerName123_ después de ser evaluada por esta expresión.
La expresión regular se puede dividir en sus componentes:
-
Los paréntesis indican que el patrón contenido en se almacenará en la variable \1.
-
Los caracteres entre corchetes [a-za-Z0-9] significan que cualquier letra (independientemente del caso) o dígito coincidirán.
-
El * (asterisco) que sigue a los corchetes indica que los caracteres entre corchetes ocurren 0 o más veces.
-
El carácter _ (subrayado) de la expresión regular significa que el nombre de zona debe tener un guión bajo inmediatamente después de la cadena alfanumérica que coinciden con los corchetes anteriores.
-
El . (punto) coincide con cualquier carácter (un comodín).
-
El * (asterisco) indica que el comodín del período anterior puede ocurrir 0 o más veces.
En otras palabras, la combinación .* indica cualquier carácter, cualquier número de veces.
Ejemplo 5 que muestra los nombres de zona sin un patrón
Puede crear una expresión regular si tiene algo similar a los siguientes nombres de zona:
-
myComputerName_HBA1_Symm1_FA1
-
myComputerName123_HBA1_Symm1_FA1
La expresión regular que podría utilizar para capturar estos elementos sería:
(.*?)_.* La variable \1 contendría _myComputerName_ (en el ejemplo del nombre de la primera zona) o _myComputerName123_ (en el ejemplo del nombre de la segunda zona). Esta expresión regular coincidiría con todo antes del primer guión bajo.
La expresión regular se puede dividir en sus componentes:
-
Los paréntesis indican que el patrón contenido en se almacenará en la variable \1.
-
El .* (asterisco de punto) coincide con cualquier carácter, cualquier número de veces.
-
El * (asterisco) que sigue a los corchetes indica que los caracteres entre corchetes ocurren 0 o más veces.
-
El carácter ? hace que la coincidencia no sea codiciosa. Esto lo obliga a dejar de coincidir en el primer guión bajo, en lugar de en el último.
-
Los caracteres _.* coinciden con el primer guión bajo encontrado y con todos los caracteres que lo siguen.
Ejemplo 6 que muestra los nombres de los equipos con un patrón
Puede crear una expresión regular si tiene algo similar a los siguientes nombres de zona:
-
Storage1_Switch1_myComputerName123A_A1_FC1
-
Storage2_Switch2_myComputerName123B_A2_FC2
-
Storage3_Switch3_myComputerName123T_A3_FC3
La expresión regular que podría utilizar para capturar estos elementos sería:
.*?_.*?_([a-zA-Z0-9]*[ABT])_.* Debido a que la convención de nomenclatura de zona tiene más de un patrón, podríamos utilizar la expresión anterior, que coincidará con todas las instancias de un nombre de host (myComputerName en el ejemplo) que termina con Una A, una B o una T, colocando ese nombre de host en la variable \1.
La expresión regular se puede dividir en sus componentes:
-
El .* (asterisco de punto) coincide con cualquier carácter, cualquier número de veces.
-
El carácter ? hace que la coincidencia no sea codiciosa. Esto lo obliga a dejar de coincidir en el primer guión bajo, en lugar de en el último.
-
El carácter de guion bajo coincide con el primer guión bajo del nombre de la zona.
-
Así, la primera combinación .*?_ coincide con los caracteres storage1_ en el ejemplo del nombre de la primera zona.
-
La segunda combinación .*?_ se comporta como la primera, pero coincide con Switch1_ en el ejemplo del nombre de la primera zona.
-
Los paréntesis indican que el patrón contenido en se almacenará en la variable \1.
-
Los caracteres entre corchetes [a-za-Z0-9] significan que cualquier letra (independientemente del caso) o dígito coincidirán.
-
El * (asterisco) que sigue a los corchetes indica que los caracteres entre corchetes ocurren 0 o más veces.
-
Los caracteres entre corchetes en la expresión regular [ABT] coinciden con un solo carácter en el nombre de la zona que debe ser A, B o T.
-
El _ (guión bajo) que sigue a los paréntesis indica que se debe realizar un seguimiento de la coincidencia de caracteres [ABT].
-
El .* (asterisco de punto) coincide con cualquier carácter, cualquier número de veces.
Por lo tanto, el resultado de esto haría que la variable \1 contenga cualquier cadena alfanumérica que:
-
fue precedido por un número de caracteres alfanuméricos y dos caracteres de subrayado
-
estaba seguido de un guión bajo (y luego de cualquier número de caracteres alfanuméricos).
-
Tenía un carácter final De A, B o T, antes del tercer guión bajo.
Ejemplo 7
Zona: myComputerName123_HBA1_Symm1_FA1
NOMBRE DE HOST: myComputerName123
RegExp: ([a-za-Z0-9]+)_.*
Ejemplo 8
En este ejemplo se encuentra todo antes de la primera _.
Zona: MyComputerName_HBA1_Symm1_FA1
MyComputerName123_HBA1_Symm1_FA1
Nombre de host: MyComputerName
Regexp: (.?)_.
Ejemplo 9
Este ejemplo lo encuentra todo después de la 1st _ y hasta la segunda _.
Zona: Z_MyComputerName_StorageName
Nombre de host: MyComputerName
RegExp: .?(.?).*?
Ejemplo 10
En este ejemplo se extrae "MyComputerName123" de los ejemplos de zona.
-
Zona:* storage1_Switch1_MyComputerName123A_A1_FC1
Storage2_Switch2_MyComputerName123B_A2_FC2
Storage3_Switch3_MyComputerName123T_A3_FC3
NOMBRE DE HOST: MyComputerName123
RegExp: .?.*([a-za-Z0-9]+)[ABT]_.*
Ejemplo 11
-
Zona:* storage1_Switch1_MyComputerName123A_A1_FC1
NOMBRE DE HOST: MyComputerName123A
RegExp: .?.*([a-za-z0-9]+).?
Ejemplo 12
El # (circumflex o caret) dentro de corchetes niega la expresión, por ejemplo, [ FF] significa cualquier cosa excepto mayúscula o minúscula F, y [ a-z] significa todo excepto la minúscula a a z, y en el caso anterior, cualquier cosa excepto la _. La instrucción format agrega en "-" al nombre del host de salida.
Zona: mhs_apps44_d_A_10a0_0429
Nombre de host: mhs-apps44-d
RegExp: ()_([AB]).*Formato en Información de infraestructura de datos: \1-\2 ([^_])_ ()_([^_]).*Formato en Información de infraestructura de datos: \1-\2-\3
Ejemplo 13
En este ejemplo, el alias de almacenamiento está delimitado por "\" y la expresión debe utilizar "\\" para definir que se está utilizando realmente "\" en la cadena, y que no forman parte de la expresión misma.
Alias de almacenamiento: \hosts\E2DOC01C1\E2DOC01N1
NOMBRE DE HOST: E2DOC01N1
RegExp: \\.?\.?\\(.*?)
Ejemplo 14
En este ejemplo se extrae "PD-RV-W-AD-2" de los ejemplos de zona.
-
ZONA:* PD_D-PD-RV-W-AD-2_01
NOMBRE DE HOST: PD-RV-W-AD-2
RegExp: -(.*-\d).*
Ejemplo 15
El ajuste de formato en este caso agrega el "US-BV-" al nombre de host.
ZONA: SRV_USBVM11_F1
NOMBRE DE HOST: US-BV-M11
RegExp: SRV_USBV([A-za-z0-9]+)_F[12]
Formato: US-BV-\1