powershell - 正则表达式在脚本中运行时不匹配,但在控制台中运行时匹配?
问题描述
我有以下代码,用于查看某些值是否与正则表达式匹配
$ValueRegex = [PSCustomObject]@{
"year" = "^(201[0-9]|2020)$"
"color" = "^#(?:[0-9a-fA-F]{6})$"
"ID" = "^\d{9}$"
}
<#
$SplitUp looks like this, each row is an object:
year:2019
ID:599245247
color:#ffffff
#>
foreach ($b in $SplitUp) {
$x = $b -split ":"
$CompareVal = $ValueRegex | Select-Object -ExpandProperty $x[0]
if ($CompareVal) {
$Compare = $x[1]
if ($Compare -match $CompareVal) {
$MatchCount++
} else {
#Print Debug Info
"'{0}' -match '{1}'" -f $Compare, $CompareVal
$x
pause
}
}
}
发生的奇怪的事情是,有时它不匹配,即使它应该匹配。如您所见,当某些内容不匹配时,我会打印调试信息,我会在其中输出相互比较的确切信息等。一个输出如下所示:
'2019' -match '^(201[0-9]|2020)$'
year
2019
问题是 - 它应该匹配。如果我'2019' -match '^(201[0-9]|2020)$'
在新的 PowerShell 控制台窗口中运行它,它会显示它是True
. 在我的脚本中,它说它是False
.
怎么了?我在 Visual Studio Code 和 PowerShell ISE 中尝试过,结果相同
解决方案
推荐阅读
- sql - 如何将传递的数据用于 sql 查询?
- javascript - prebid.js 如何与针对 hb_pb 的特定 DFP 订单/订单项进行对话
- c - 如何使用 GTK 绘制像素图?
- c++ - 主范围内具有不同数据类型的相同变量
- regex - Python:我的正则表达式在某些字符串情况下不匹配
- php - 从 php 脚本运行终端
- algorithm - 研究 A* 算法的一些变体
- batch-file - 如果一个变量被设置为一个变量的名称,那么它可以成为那个变量吗?(批)
- database - 多模块访问同一张表的架构解决方案
- android - 我无法在 Android 中获取图像视图的轴心点