gpt4 book ai didi

powershell - 在给定变量之前从字符串中删除所有内容

转载 作者:行者123 更新时间:2023-12-02 23:19:11 25 4
gpt4 key购买 nike

我有一个字符串some\string/with/**/special\chars\haha。在变量中,我持有chars字符串,并且尝试删除chars之前和包括的所有内容,因此预期的输出将为\haha
我尝试过……

$temp = "some\string/with/**/special\chars\haha"
$tmp="chars"
$temp -replace '(?s)^.*$tmp', ''


$temp -replace '(?s)^.*$([regex]::Escape($tmp))', ''
但是唯一有效的方法是将字符串直接置于regex条件中。仅此示例提供了预期的输出:
$temp -replace '(?s)^.*chars', ''
我究竟做错了什么?

编辑。:
我需要在正则表达式中使用变量,因为我要遍历像这样的多个字符串,而并非总是要删除的部分具有相同的字符串(例如: some\string/with/**/special\chars\haha -> \haha; C:\st/h/*/1234\asdf\x -> \x)。因此,总而言之,我在正则表达式中使用变量时遇到了问题,而不是正则表达式本身,因为当我用字符串替换变量时,正则表达式本身可以正常工作(如上所示)

最佳答案

看起来是因为您在正则表达式中使用单引号而不是双引号。这意味着未使用变量$tpm

这是您的代码应如下所示:

$temp = "some\string/with/**/special\chars\haha"
$tmp="chars"
$temp -replace "(?s)^.*$tmp", ''

您的代码使用$ tmp而不是$ tmp变量中的实际值。

关于powershell - 在给定变量之前从字符串中删除所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56769766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com