捕获两个不同字符之间的文本在第一个{和最后一个}

问题描述

使用PowerShell在两个不同的字符之间捕获文本。在第一个{和最后一个}之间。基本上有包含Json的文本,我想从中捕获json。我在找例子,但到目前为止还没有运气。

 
PROJECT Description: Azure Test Project Description
 
PROJECT ADMINISTRATORS: jjohnson
 
CONTRIBUTORS: jdoe
 
BOARD PROCESS: Agile
 
SPECIAL INSTRUCTIONS:
 
 
{
"organization": "https://dev.azure.com/cloudops","projectName": "Test Project","projectDescription": "Azure Test Project Description","projectProcesstype": "Agile","specialInstructions": "","adminMembers": [
{
"userSamAccountName": "jjohnson","userEmailAddress": "[email protected]","userPrincipalName": "[email protected]","projectGroupType": "projectAdministrator"
}
],"contribMembers": [
{
"userSamAccountName": "jdoe","userEmailAddress": "[email protected]","userPrincipalName": "[email protected]","projectGroupType": "projectContributor"
}
]
}

解决方法

这是您要找的吗?

[Regex]::Match((Get-Content "sampleinputfile.txt" -Raw),'^{.+}',[Text.RegularExpressions.RegexOptions]::Multiline -bor
  [Text.RegularExpressions.RegexOptions]::Singleline).Value

基本上,这会将输入文件转换为单个(换行符分隔的)字符串(Get-Content -Raw),然后使用.NET Framework's Match method对{{之间的文本行进行正则表达式匹配1}}和{个字符(含)。