Recibo este texto de evento y necesito poder analizar el FQDN para cada línea junto con el nombre del aspecto. He probado varios ejemplos de expresiones regulares de FQDN y el único que se acercó es ^[^.]+ pero aún así solo capturó el nombre de host, con lo que estaría bien. Pero parece que no puedo capturar ambos conjuntos de datos.
Ejemplo:
Línea: Test1.test.local Sistema Reservado 73,2 %
Producción:
FQDN = Prueba1.prueba.local
Nombre de aspecto = Sistema reservado
'Performance Disk Utilization Exceeds 50%' threshold Description: Average disk utilization during the past 2 minutes exceeds 50% New Items (11) Occurred at 10/21/2021 10:38:06 AM Display Name Aspect Name Aspect Value Test1.test.local System Reserved 73.2 % Test1-stage.test.local System Reserved 69.3 % test-stage.test.local \\?\Volume{c2e5b983-0000-0000-0000-006225000000}\ 83.3 % test2.test.local System Reserved 73.2 % test2.test.local E:\ - Data 62.5 % test.test.LOCAL System Reserved 69.3 % test.test.LOCAL \\?\Volume{0833abcb-0000-0000-0000-006225000000}\ 83.3 % test3.test.local System Reserved 69.4 % test3.test.local E:\ - SCCM 85.7 % test3.cdp.local C:\ 53.1 % test3.cdp.local \\?\Volume{fa03c719-0000-0000-0000-f0e17c000000}\ 83.3 %Puede usar 2 grupos de captura y hacer coincidir el número al final seguido de un signo de porcentaje:
([^\s.]+(?:\.[^\s.]+)+) (.+?) \d+(?:\.\d+)? %( Grupo de captura 1[^\s.]+ Coincidir con 1+ caracteres que no sean un carácter de espacio en blanco o .(?:\.[^\s.]+)+ Repetir 1+ veces haciendo coincidir un punto seguido de 1+ caracteres que no sean espacios en blanco o . para hacer coincidir al menos un solo punto) Cerrar grupo 1(.+?) Captura 1 o más dígitos en el grupo 2 entre 2 espacios\d+(?:\.\d+)? % Coincide con 1+ dígitos con una parte decimal opcional y %demostración de expresiones regulares
const regex = /([^\s.]+(?:\.[^\s.]+)+) (.+?) \d+(?:\.\d+)? %/gm; const str = `Test1.test.local System Reserved 73.2 % Test1-stage.test.local System Reserved 69.3 % test-stage.test.local \\\\?\\Volume{c2e5b983-0000-0000-0000-006225000000}\\ 83.3 % test2.test.local System Reserved 73.2 % test2.test.local E:\\ - Data 62.5 % test.test.LOCAL System Reserved 69.3 % test.test.LOCAL \\\\?\\Volume{0833abcb-0000-0000-0000-006225000000}\\ 83.3 % test3.test.local System Reserved 69.4 % test3.test.local E:\\ - SCCM 85.7 % test3.cdp.local C:\\ 53.1 % test3.cdp.local \\\\?\\Volume{fa03c719-0000-0000-0000-f0e17c000000}\\ 83.3 %`; console.log(Array.from(str.matchAll(regex), m => ({ "FQDN": m[1], "AspectName": m[2] })));