使用正则表达式获取给定字符串中=之后的值

时间:2014-04-08 14:12:41

标签: .net regex powershell

我有两个字符串,如下所示:

$String1="Variable Value: PTSPT ID= 12.5 PTSPA ID= 14.5"

$String2="Little GID=7375678 Coverity Client=t-i-kjo-1"

如果我为12.5传递字符"PTSPT ID"14.5"PTSPA ID"传递7375678,我希望得到值"Little GID" t-i-kjo-1的{​​{1}}。

我尝试了以下操作,但它不起作用:

"Coverity Client"

1 个答案:

答案 0 :(得分:3)

使用正则表达式尝试此操作。 $val变量可以是用户输入

$string1
Variable Value: PTSPT ID= 12.5 PTSPA ID= 14.5
$string2
Little GID=7375678 Coverity Client=t-i-kjo-1
$val = "PTSPT ID"
[regex]::Matches( $String1 , "(?<=$val=\s*)[^\s]+" )  | select -expa value
12.5
$val = "PTSPA ID"
[regex]::Matches( $String1 , "(?<=$val=\s*)[^\s]+" )  | select -expa value
14.5
$val = "Little GID"
[regex]::Matches( $String2 , "(?<=$val=\s*)[^\s]+" )  | select -expa value
7375678
$val = "Coverity Client"
[regex]::Matches( $String2 , "(?<=$val=\s*)[^\s]+" )  | select -expa value
t-i-kjo-1

评论后编辑:

这是关于正则表达式的一点评论,但不是,但绝对不是绝对的;)

(?&lt; = $ val = \ s * - &gt;是一个后视断言:寻找&#39; $ val =&#39;

[^ \ s] - &gt;匹配所有但不是空格

+ - &gt;至少匹配一次上一场比赛