Select-String Regex查找简单引号之间的字符串

时间:2019-01-18 08:13:31

标签: regex powershell-v4.0

我从invoke-webrequest得到以下几行:

$ git clone https://github.com/awaitility/awaitility.git

从此摘录中,我只需要将numVersion Number保留在简单引号之间==> numVersion = 'v1.1805.24', if(numVersion!="#@numVersion@#" && numVersion!="v1.1805.24") {

但是我得到的是所有行:

v1.1805.24

代码如下:

numVersion = 'v1.1805.24',
    if(numVersion!="#@numVersion@#" && numVersion!="v1.1805.24") {

2 个答案:

答案 0 :(得分:0)

您可以使用

$r.content -match "(?<=numVersion\s*=\s*')v[0-9.]+"

请参见regex demo

然后,您需要的值将在$matches[0]中。或者,您也可以捕获所需的文本:

$r.content -match "numVersion\s*=\s*'(v[0-9.]+)"

然后,值将在$matches[1]中。

模式详细信息

  • (?<=numVersion\s*=\s*')-匹配但不消耗numVersion和一个=并带有0+空格和一个'字符的正向后视
  • v[0-9.]+-v,然后是1个或多个数字或.个字符。您可以在这里仅用[^']+替换此模式,但是它不适用于当前任务。

答案 1 :(得分:0)

最简单的解决方案是:

$r.content -match  "'([\S]+)'"

带引号的值位于$matches[0]中,不带引号的值位于$matches[1]中。