给出类似
的字符串'指纹是:ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678910111'
如何删除不是由A-Z 0-9组成的40个字符的所有文本?
目前我正在寻找字符串'指纹是:'并将其删除,但我觉得寻找40个字符的字母数字会更安全。
$foo = $foo -replace 'The fingerprint is: ',''
我希望这样的事情有效,但没有运气。
$foo = $foo -creplace '^[A-Z0-9]{40}',''
我也尝试过寻找符合
的字符$foo = $foo -match '[A-Z0-9]{40}'
答案 0 :(得分:4)
取决于一点,但如果它是40连续的,它是你可以使用的唯一40个字符串替换:
"The fingerprint is: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678910111" -replace '.*([A-Z0-9]{40}).*', '$1'
注意:替换$ 1是对匹配组的引用。它不是PowerShell变量,故意用单引号编写,因此不会扩展。
答案 1 :(得分:2)
要匹配40个字符的字母数字而没有替换,这个
$foo = 'The fingerprint is: ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678910111';
$foo -Match '[A-Z0-9]{40}' | Out-Null;
Write-Output $matches[0];
打印
ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678910111
[A-Z0-9]
是一个括号表达式,匹配任何包含的字符(-
表示一系列值){40}
匹配前一个元素40次Out-Null
会抑制-match
运算符