Powershell 正则表达式获取字符串的一部分

Ami*_*Ali -3 regex powershell sharepoint

我想将字符串的一部分用于其他地方。例如,我有以下字符串:

  • Project XYZ 是项目名称 - 20-12-11

我想从字符串中获取值“XYZ 是项目名称”。数字前面的单词“Project”和字符“-”将始终存在。

Bar*_*art 6

我认为环视正则表达式可以在这里工作,因为“项目”和“-”总是存在的:

(?<=Project ).+?(?= -)

环视对于处理获取子字符串的情况很有用。

解释:

  • (?<= = 负面回顾
  • Project = 起始字符串(包括空格)
  • ) = 关闭负面回顾
  • .+? = 匹配介于两者之间的任何内容
  • (?= = 正向预测
  • - = 结束字符串
  • ) = 关闭正向前瞻

PowerShell 中的示例:

Function GetProjectName($InputString) {
    $regExResult = $InputString | Select-String -Pattern '(?<=Project ).+?(?= -)'
    $regExResult.Matches[0].Value
}

$projectName = GetProjectName -InputString "Project XYZ is the project name - 20-12-11"
Write-Host "Result = '$($projectName)'"
Run Code Online (Sandbox Code Playgroud)