Estoy tratando de leer un archivo de registro y extraer información de máquina/configuración mediante expresiones regulares. Este es un ejemplo del registro:Expresión regular - Grupos de repetición
...
COMPUTER INFO:
Computer Name: TESTCMP02
Windows User Name: testUser99
Time Since Last Reboot: 405 Minutes
Processor: (2 processors) Intel(R) Xeon(R) CPU 5160 @ 3.00GHz
OS Version: 5.1 .number 2600:Service Pack 2
Memory: RAM: 48% used, 3069.6 MB total, 1567.3 MB free
ServerTimeOffSet: -146 Seconds
Use Local Time for Log: True
INITIAL SETTINGS:
Command Line: /SKIPUPDATES
Remote Online: True
INI File: c:\demoapp\system\DEMOAPP.INI
DatabaseName: testdb
SQL Server: 10.254.58.1
SQL UserName: SQLUser
ODBC Source: TestODBC
Dynamic ODBC (not defined): True
...
Me gustaría capturar cada 'bloque' de los datos, utilizando el encabezado como un solo grupo, y los datos mientras que un segundo (es decir, "INFO ORDENADOR", "Nombre de equipo : ....... ") y repita esto para cada bloque. La expresión si tiene hasta ahora es
(?s)(\p{Lu}{1,} \p{Lu}{1,}:\r\n)(.*\r\n\r\n)
Esto saca el bloque a los grupos como debería, lo cual es genial. Pero necesito que repita la captura, que parece que no puedo obtener. He intentado varias expresiones de agrupación, entre ellos:
(?s)(?:(\p{Lu}{1,} \p{Lu}{1,}:\r\n)(.*\r\n\r\n))*
lo que parece ser correcta, pero me da la espalda un montón de grupos resultado nulo con valores de los elementos del grupo vacío. Estoy usando la clase .Net RegEx para aplicar las expresiones, ¿alguien puede ayudarme aquí?
Entiendo el enfoque, pero las primeras expresiones no devuelven grupos coincidentes, y no sé por qué. ¿Alguna sugerencia? – Jason
En el primer caso, no estás obteniendo un grupo, solo estás obteniendo una coincidencia. Agregaré más código al ejemplo. –
Lo disculpo. Uno lo hice en código, funcionó como un encanto. Estaba probando los ejemplos por sí mismos en Expresso. Deben ser las opciones de línea única (Singleline), que tendré que explorar con más detalle para poder entender cómo hacen que las expresiones funcionen. Muchas gracias por tu tiempo. – Jason