gpt4 book ai didi

regex - 如何忽略存储在PowerShell字符串变量中的转义序列?

转载 作者:行者123 更新时间:2023-12-03 12:10:35 28 4
gpt4 key购买 nike

在我的PowerShell脚本中,我在多个文件上运行Select-String,寻找通过变量($ id)传递给它的字符串:

foreach ($file in (ls "path\to\files")) {
$found = $false
$found = Select-String -Path $file $id -Quiet
if ($found) {
break
}
}

不幸的是,$ id变量有时会像“\ C”或“\ T”之类,Select-String试图将其解释为转义序列。这些不是有效的转义序列,因此Select-String会引发错误。它们不打算用作转义序列(例如,它可能是文件路径的一部分,例如“C:\ Test”),那么如何防止PowerShell / Select-String这样解释它们呢?我试过在$ id周围使用括号,但没有运气。

最佳答案

使用静态escape()方法,它指示正则表达式引擎按字面意义而不是元字符来解释这些字符:

$id = [regex]::escape($id)

您还可以将命令转到一个衬里( -path可以获取文件的集合):
Select-String -Path path\to\files\\* -Pattern ([regex]::escape($id)) -Quiet

关于regex - 如何忽略存储在PowerShell字符串变量中的转义序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/527772/

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