我有两个字符串,如下所示:
$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"
答案 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;至少匹配一次上一场比赛