powershell - 如何在正斜杠后删除地址的最后一部分?

标签 powershell

我有一个简单的问题已经困扰了我几个小时。我基本上是从服务器获取以下格式的字符串。我需要做的就是删除最后一部分。例如:

AAA\BBB\CCC\DDD

结果将是:

AAA\BBB\CCC

另一个例子:

AAA\BBB\CCC\DDD\EEE

结果将是:

AAA\BBB\CCC\DDD

你能帮助我吗?谢谢你。

$host_attr = $host_attr.replace('`n', '')
write-host "host_attr: " $host_attr
$host_attr = $host_attr.ToCharArray()
[Array]::Reverse($host_attr) 
$host_attr = -join $host_attr
$domanNameDump, $host_attr  = $host_attr.split('\\', 3) 
$host_attr = $host_attr.ToCharArray()
[Array]::Reverse($host_attr)
$host_attr = -join $host_attr
write-host "host_attr: " $host_attr

最佳答案

您可以使用 -ReplaceSplit-Path有效地删除以最终 \ 开头的字符.

更换运算符(operator)解决方案:

$s = "AAA\BBB\CCC\DDD\EEE"
$s -Replace "(.*)\\.*",'$1'

拆分路径解决方案:
$s = "AAA\BBB\CCC\DDD\EEE"
Split-Path -Path $s

解释:
-Replace运算符使用正则表达式模式查找匹配项并替换为指定的任何值。在这种情况下,我们使用 $1因为它代表正则表达式 (.*) 中的捕获组 1 ( (.*)\\.* ) . .*是所有字符的贪婪匹配。 \需要在正则表达式中转义,这就是模式包含 \\ 的原因.决赛.*只匹配最后一个 \ 之后的剩余字符以便它们被替换。 (.*)\\的顺序很重要,以便贪婪匹配将在最后一个 \ 停止找到的字符。见 Replacement Operator了解更多信息。

由于Split-Path如果没有可选参数,则删除从最后一个 \ 开始的任何内容,它可以用于这个特定的场景。见 Split-Path了解更多信息。

关于powershell - 如何在正斜杠后删除地址的最后一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56467718/

相关文章:

azure - 无法通过 Azure 自动化将数据附加到共享点文件

powershell - 使用 PowerShell 在长文本文件的顶部插入一行文本

winforms - 类中的 Powershell winform 事件处理程序导致范围问题

powershell - 如何使用 PowerShell 创建 zip 存档?

powershell - Powershell分组

powershell - 设置 ARM 模板 Web 应用程序设置

Powershell 配置文件将参数附加到某个命令

regex - 是否可以使用 `switch -regex` 获取匹配位置

csv - powershell csv 选择每第 n 行

powershell - 将证书从驱动程序导入到 TrustedPublisher 以进行静默驱动程序安装