Sto cercando di leggere un file di registro ed estrarre alcune informazioni sulla macchina/sull'impostazione utilizzando le espressioni regolari. Ecco un esempio dal registro:Espressione regolare - Gruppi ripetuti
...
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
...
Vorrei catturare ogni 'blocco' dei dati, utilizzando l'intestazione come un unico gruppo, e i dati come un secondo (vale a dire "INFO COMPUTER", "Nome computer : ....... ") e ripetere questo per ogni blocco. L'espressione se è stata finora è
(?s)(\p{Lu}{1,} \p{Lu}{1,}:\r\n)(.*\r\n\r\n)
Questo estrae il blocco nei gruppi come dovrebbe, il che è ottimo. Ma ho bisogno di farlo ripetere la cattura, che non riesco a ottenere. Ho provato diverse espressioni di raggruppamento, tra cui:
(?s)(?:(\p{Lu}{1,} \p{Lu}{1,}:\r\n)(.*\r\n\r\n))*
che sembrerebbe essere corretto, ma torno un sacco di gruppi risultato nullo con valori delle voci di gruppo vuoto. Sto usando la classe .Net RegEx per applicare le espressioni, qualcuno può aiutarmi qui?
Capisco l'approccio, ma le prime espressioni non restituiscono i gruppi corrispondenti, e non so perché. Eventuali suggerimenti? – Jason
Nel primo caso, non si ottiene un gruppo, si sta solo ottenendo una corrispondenza. Aggiungerò altro codice all'esempio. –
Mi chiedo. Uno ho fatto questo in codice, ha funzionato come un fascino. Stavo provando gli esempi da soli in Expresso. Devono essere le opzioni Singleline | Multiline, che dovrò esplorare con maggiori dettagli in modo da capire come fanno funzionare le espressioni. La ringrazio molto per il vostro tempo. – Jason