在特定模式之前删除任何字符串的正则表达式是什么?

时间:2018-04-16 14:07:54

标签: regex powershell

我有以下字符串

$str = '$TestSuiteObj | Add-Member -MemberType ScriptMethod Test_volumeval'

我需要移除'$TestSuiteObj | Add-Member -MemberType ScriptMethod并仅保留Test_volumeval1

我试图将其中的一些截断,但不完整。

$str -replace 'Add-Member -MemberType ScriptMethod',''

如何完全截断并仅在PowerShell中保留Test_volumeval1?

2 个答案:

答案 0 :(得分:1)

尝试捕获组

$str -replace '^.*?\s(\w+)$', '$1'

答案 1 :(得分:1)

我建议修剪字符串并用空格分割,然后抓住最后一项:

$str.trim().split(' ')[-1]

但是,如果你想使用正则表达式,你可能只匹配一行中的所有字符,包括最后一个空格,并用空字符串替换它们:

$str.trim() -replace '.*\s', ''
# => Test_volumeval

请参阅regex demo

您也可以使用

$matched = $str.trim() -match '(\S+)\s*$'

并使用$matches[1]中的值 - 一个或多个非空白字符的最后一个块。

请参阅another regex demo