2016-08-10 8 views
-2

ich den folgenden Text haben zu finden .....RegEx Mit einem bestimmten Muster von Text

('virtualMachines_20160810_VM02_name'),'2016710113655.vhd'))]" 
      }, 
      "caching": "ReadWrite" 
      }, 
      "dataDisks": [] 
     }, 
     "osProfile": { 
      "computerName": "[parameters('virtualMachines_20160810_VM02_name')]", 
      "adminUsername": "marc.kean", 
      "windowsConfiguration": { 
      "provisionVMAgent": true, 
      "enableAutomaticUpdates": true 
      }, 
      "secrets": [], 
      "adminPassword": "[parameters('virtualMachines_20160810_VM02_adminPassword')]" 
     }, 
     "networkProfile": { 
      "networkInterfaces": [ 
      { 
       "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaces_20160810_vm02308_name'))]" 
      } 
      ] 
     } 
     }, 

Ich versuche RegEx zu benutzen, um genau einen Abschnitt dieses Textes anzupassen. Der Abschnitt, den ich abgleichen möchte, ist die gesamte Zeile mit dem Text "osProfile" (einschließlich aller Leerzeichen am Anfang/Ende der Zeile) bis einschließlich der gesamten Zeile (einschließlich aller Leerzeichen) die Zeile knapp über " networkProfile "

Dies ist, was ich bisher habe, aber das entspricht zwei Capture-Gruppen, ich möchte nur speziell den Text, den ich angegeben habe.

\s*"osProfile[\w|\W]*},(\s*"networkProfile") 

Ich habe auch dies:

((\s*"osProfile[\w|\W]*?},)([\w|\W 
+2

ist dies eine JSON-Datei? ist es nicht einfacher, es als ein Objekt zu bekommen, als es durch einen Regexp zu extrahieren? – ssbb

Antwort

1

nicht sicher, was Ihren Anwendungsfall für die Verwendung regulärer Ausdruck ist, aber das ist, was Sie wollen:

\s*"osProfile":\s*\{[^\}]+\}[^\}]+\}, 

https://regex101.com/r/qA1nQ1/2

\s*"osProfile":\s*\{ 

erhalten Sie die fi erste Linie

[^\}]+\} 

erhalten Sie bis zum ersten alles bis}

[^\}]+\}, 

erhalten Sie alles bis die zweite} gefolgt von der,

+0

Gut, einen anderen Weg zu sehen, danke –

Verwandte Themen