powershell extrait de texte entre deux chaînes de caractères

Je sais que cette question a été posée mais je ne peux pas obtenir toutes les réponses que j'ai regardé au travail. J'ai un fichier JSON qui a des milliers de lignes et souhaitez simplement extraire le texte entre deux chaînes de caractères à chaque fois qu'ils apparaissent (ce qui est beaucoup).

Comme un simple exemple de mon JSON devrait ressembler à ceci:

    "customfield_11300": null,
    "customfield_11301": [
      {
        "self": "xxxxxxxx",
        "value": "xxxxxxxxx",
        "id": "10467"
      }
    ],
    "customfield_10730": null,
    "customfield_11302": null,
    "customfield_10720": 0.0,
    "customfield_11300": null,
    "customfield_11301": [
      {
        "self": "zzzzzzzzzzzzz",
        "value": "zzzzzzzzzzz",
        "id": "10467"
      }
    ],
    "customfield_10730": null,
    "customfield_11302": null,
    "customfield_10720": 0.0,

Je tiens donc à la sortie de tout ce qui est entre "customfield_11301" et "customfield_10730":

      {
        "self": "xxxxxxxx",
        "value": "xxxxxxxxx",
        "id": "10467"
      }
    ],
      {
        "self": "zzzzzzzzzzzzz",
        "value": "zzzzzzzzzzz",
        "id": "10467"
      }
    ],

Je suis en train de le garder aussi simple que possible - afin de ne pas les soins sur les supports affichée dans la sortie.

C'est ce que j'ai (qui sorties plus que ce que je veux):

$importPath = "todays_changes.txt"
$pattern = "customfield_11301(.*)customfield_10730"

$string = Get-Content $importPath
$result = [regex]::match($string, $pattern).Groups[1].Value
$result
  • pourquoi ne pas décoder le JSON en objet et l'adresse de propriétés directement?
  • La réponse rapide est - changer votre avides de capture (.*) non gourmand - (.*?). Cela devrait le faire.
  • Heureux, il a aidé. N'hésitez pas à marquer ma réponse ci-dessous comme acceptée.
InformationsquelleAutor adjuzy | 2016-04-20